go程式設計使用range的思考

2021-09-23 13:20:59 字數 453 閱讀 5099

記性不好,初學golang,作個筆記。

先看以下**:

package main

import "fmt"

type student struct

func main(),

, ,

} for _, s := range stus

for k, v := range m

}

有什麼問題嗎?對映中的內容會如何

輸出如下:

john

bob

any

原因是range時,s的記憶體位址是不變的,相應的從stus中取出的值依次賦值給s,當寫map時,使用的卻是s的記憶體位址。

相當於s是公共位址,stus中的內容都會去使用,最後結果就是哪個最後使用的,s中的內容就是哪個,而map中記錄的剛好是s的位址,就出現如上的結果。

GO的range具體使用

目錄 go 語言的 for range 能做什麼呢?for range 如何使用 for range 的返回值有哪些情況,可以對於任何資料結構使用嗎?for range 的返回值如果不需要,可以如何處理?for range 的資料是如何傳遞的?剛學習 golang 的 xdm 會不會有上面的疑問?其...

Go語言中Range的使用

go 語言中 range 關鍵字用於 for 迴圈中迭代陣列 array 切片 slice 通道 channel 或集合 map 的元素。在陣列和切片中它返回元素的索引和索引對應的值,在集合中返回 key value 對。package main import fmt func main sum 0...

Go併發程式設計 select的使用

本文描述了select的用法,通過select可以監聽多個channel的讀寫事件。這很類似於linux系統程式設計的select函式。但在go中,實現的機制明顯是不同的。linux系統程式設計的select是輪訓的機制,而且監控的是檔案描述符,且有數量的限制。go中的select和channel配...