Go語言 range關鍵字迴圈迭代切片

2022-02-20 14:09:00 字數 1135 閱讀 6026

go語言有個特殊的關鍵字 range,它可以配合關鍵字 for 來迭代切片裡的每乙個元素。當迭代切片時,關鍵字 range 會返回兩個值,第乙個值是當前迭代到的索引位置,第二個值是該位置對應元素值的乙份副本,如下圖所示

需要強調的是,range 返回的是每個元素的副本,而不是直接返回對該元素的引用,如下所示

//

建立乙個整型切片,並賦值

slice := int

//迭代每乙個元素,並顯示其值

for k, v :=range slice

輸出結果為:

index:0 value:10 value-addr:c00000a0b0 elemm-addr:c000010340

index:

1 value:20 value-addr:c00000a0b0 elemm-addr:c000010348

index:

2 value:30 value-addr:c00000a0b0 elemm-addr:c000010350

因為迭代返回的變數是乙個在迭代過程中根據切片依次賦值的新變數,所以 value 的位址總是相同的,要想獲取每個元素的位址,需要使用切片變數和索引值(例如上面**中的 &slice[k])。

當然,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...