婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 關于golang中平行賦值淺析

關于golang中平行賦值淺析

熱門標簽:學海導航地圖標注 江西轉化率高的羿智云外呼系統 浙江高速公路地圖標注 中國地圖標注省會高清 地圖標注的汽車標 南通如皋申請開通400電話 西部云谷一期地圖標注 高德地圖標注口訣 廣州呼叫中心外呼系統

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

i, j = j, i

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

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

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

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]。 這是因為等號左邊的切片的索引表達式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]:

在賦值的過程中,即使后面的引發了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()

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

理解參照了《Go并發編程一書》

總結

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

您可能感興趣的文章:
  • Go語言中的變量聲明和賦值
  • Go語言實現字符串切片賦值的方法小結
  • go和python變量賦值遇到的一個問題

標簽:吐魯番 許昌 曲靖 德宏 保定 常州 貴州 東營

巨人網絡通訊聲明:本文標題《關于golang中平行賦值淺析》,本文關鍵詞  關于,golang,中,平行,賦值,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于golang中平行賦值淺析》相關的同類信息!
  • 本頁收集關于關于golang中平行賦值淺析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 板桥市| 武夷山市| 巴彦淖尔市| 广宁县| 武山县| 潮安县| 福鼎市| 新乡市| 乾安县| 邵武市| 乌兰察布市| 保靖县| 拜城县| 新干县| 聂拉木县| 宁安市| 安义县| 嘉禾县| 都安| 长子县| 进贤县| 莆田市| 广州市| 会同县| 尼玛县| 庆阳市| 新河县| 潮州市| 铁岭县| 容城县| 江门市| 博野县| 泉州市| 郧西县| 彭州市| 吉木萨尔县| 柘荣县| 石台县| 阿拉善左旗| 双牌县| 涡阳县|