go語言有個特殊的關鍵字 range,它可以配合關鍵字 for 來迭代切片裡的每乙個元素。當迭代切片時,關鍵字 range 會返回兩個值,第乙個值是當前迭代到的索引位置,第二個值是該位置對應元素值的乙份副本,如下圖所示
需要強調的是,range 返回的是每個元素的副本,而不是直接返回對該元素的引用,如下所示
//輸出結果為:建立乙個整型切片,並賦值
slice := int
//迭代每乙個元素,並顯示其值
for k, v :=range slice
index:0 value:10 value-addr:c00000a0b0 elemm-addr:c000010340因為迭代返回的變數是乙個在迭代過程中根據切片依次賦值的新變數,所以 value 的位址總是相同的,要想獲取每個元素的位址,需要使用切片變數和索引值(例如上面**中的 &slice[k])。index:
1 value:20 value-addr:c00000a0b0 elemm-addr:c000010348
index:
2 value:30 value-addr:c00000a0b0 elemm-addr:c000010350
當然,range 關鍵字不僅僅可以用來遍歷切片,它還可以用來遍歷陣列、字串、map 或者通道等。
package main執行結果import
"fmt
"func main()
//迭代每乙個元素,並顯示其值
for k, v :=range slice
fmt.println(
"\n使用空白識別符號(下劃線)來忽略索引值")
//使用空白識別符號(下劃線)來忽略索引值
for _, v :=range slice
fmt.println(
"\n使用傳統的 for 迴圈對切片進行迭代")
//使用傳統的 for 迴圈對切片進行迭代
for i := 0; i < len(slice); i++
}
32 筆記go語言 range關鍵字
32.筆記go語言 range關鍵字 保留字range可用於迴圈。它可以在slice array string map和channel.range是個迭代器,當被呼叫的時候,從它迴圈的內容中返回乙個鍵值對。基於不同的內容,range返回不同的東西。當對slice或者array做迴圈時,range返回...
go語言基礎 關鍵字
定義 被程式語言保留而不讓程式設計人員作為識別符號使用的字串行,也可以稱為保留字 go語言中的關鍵字 go語言關鍵共計25個 chan func inte ce map和struct用來宣告和定義go語言的復合資料型別,分別與go語言的復合資料型別channel 通道 function 函式 int...
關於Go語言中defer關鍵字
在go語言中,defer語句會在該函式結束的時候被呼叫,即使後面的語句執行時出現異常了defer語句仍然會被執行。需要注意的是,如果defer語句中引用了引數,則該引數的值將是程式到defer這一行的時候的值,而與後面的語句沒有關係。以下為簡單測試 package main import fmt f...