欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于golang中平行賦值淺析

 更新時間:2018年08月19日 14:09:36   作者:jmycanfly  
這篇文章主要給大家介紹了關(guān)于golang中平行賦值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用golang具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

對于golang, 交換兩個數(shù)很簡單,如下這么寫就可以了:

i, j = j, i

等號左邊和右邊含有多個表達(dá)式,這就是平行賦值。 賦值分為兩個步驟:

  • 計算等號左邊的操作數(shù)的索引表達(dá)式和取址表達(dá)式,計算等號右邊的表達(dá)式。
  • 賦值

我們來看下面一段代碼會輸出什么?

func main() {
 i := 1
 s := []string{"A", "B", "C"}
 i, s[i-1] = 2, "Z"
 fmt.Printf("s: %v \n", s)
}

這里輸出的 s: [Z,B,C] 而不是s: [A,Z,C]。 這是因為等號左邊的切片的索引表達(dá)式i-1會被先計算,最后才是賦值。 計算和賦值的順序,都是從左往右。 我們再來看下面的代碼會輸出什么?

func main() {
 a := []int{1, 2, 3, 4}
 defer func(a []int) {
  fmt.Printf("a: %v\n", a)
 }(a)
 a[0], a[4] = a[1], a[2]
}

輸出的是:

a: [2 2 3 4]
panic: runtime error: index out of range

goroutine 1 [running]:

在賦值的過程中,即使后面的引發(fā)了panic,前面的也會被賦值成功。 再看這個會輸出什么?

func main() {
 a := []int{1, 2, 3, 4}
 defer func(a []int) {
  fmt.Printf("a: %v\n", a)
 }(a)
 a[0], a[1] = a[2], a[4]
}

輸出的是:

a: [1 2 3 4]
panic: runtime error: index out of range

goroutine 1 [running]:
main.main()

再次理解一下,賦值的第一步,計算等號左邊的索引表達(dá)式,取址表達(dá)式 和 計算等號右邊的表達(dá)式。

理解參照了《Go并發(fā)編程一書》

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • goland中文件頭自動注釋的操作

    goland中文件頭自動注釋的操作

    這篇文章主要介紹了goland中文件頭自動注釋的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang底層原理解析String使用實例

    Golang底層原理解析String使用實例

    這篇文章主要為大家介紹了Golang底層原理解析String使用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Go存儲基礎(chǔ)使用direct io方法實例

    Go存儲基礎(chǔ)使用direct io方法實例

    這篇文章主要介紹了Go存儲基礎(chǔ)之如何使用direct io方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言列表List獲取元素的4種方式

    Go語言列表List獲取元素的4種方式

    Golang的列表元素的獲取可以使用內(nèi)置的 Front 函數(shù)獲取頭結(jié)點,使用 Back 函數(shù)獲取尾結(jié)點,使用 Prev 獲取前一個結(jié)點,使用 Next 獲取下一個結(jié)點,本文就介紹了Go語言列表List獲取元素的4種方式,感興趣的可以了解一下
    2022-04-04
  • 使用go備份StarRocks建表語句方法實例

    使用go備份StarRocks建表語句方法實例

    這篇文章主要為大家介紹了使用go備份StarRocks建表語句方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • golang Iris運行多個應(yīng)用的實現(xiàn)

    golang Iris運行多個應(yīng)用的實現(xiàn)

    本文主要介紹了golang Iris運行多個應(yīng)用的實現(xiàn),在Iris里面,提供了一種方式可以讓我們同時運行多個應(yīng)用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 用Go語言標(biāo)準(zhǔn)庫實現(xiàn)Web服務(wù)之創(chuàng)建路由

    用Go語言標(biāo)準(zhǔn)庫實現(xiàn)Web服務(wù)之創(chuàng)建路由

    在上一節(jié)中創(chuàng)建了項目,這篇文章主要介紹如何用Go語言標(biāo)準(zhǔn)庫創(chuàng)建路由,文中有詳細(xì)的代碼示例,對大家的學(xué)習(xí)或工作有一定的幫助,感興趣的同學(xué)可以參考下
    2023-05-05
  • 基于go-cqhttp與Flask搭建定制機(jī)器人項目實戰(zhàn)示例

    基于go-cqhttp與Flask搭建定制機(jī)器人項目實戰(zhàn)示例

    這篇文章主要為大家介紹了基于go-cqhttp與Flask搭建定制機(jī)器人項目實戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go語言的變量、函數(shù)、Socks5代理服務(wù)器示例詳解

    Go語言的變量、函數(shù)、Socks5代理服務(wù)器示例詳解

    這篇文章主要介紹了Go語言的變量、函數(shù)、Socks5代理服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • go:gin輸出日志文件方式

    go:gin輸出日志文件方式

    這篇文章主要介紹了go:gin輸出日志文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論