在 Go 中函數參數傳遞時,切片和映射會傳遞引用,而不是值。切片在函數中修改會影響呼叫函數中的切片。映射在函數中修改也會影響呼叫函數中的映射。若需要傳遞副本,可以使用 copy 函數。多個 goroutine 同時存取切片或映射時,應考慮資料競爭並使用互斥鎖同步存取。
Go 中函數參數傳遞中的切片和映射
在Go 中,函數參數可以是值類型或參考類型。值類型在參數傳遞時會被複製,而引用類型會被傳遞引用。
切片
切片是參考類型,因此在函數參數傳遞時會傳遞它的參考。這意味著對函數中切片元素進行的任何更改都將在呼叫它的函數中反映出來。
範例:
func modifySlice(slice []int) { slice[0] = 100 // 修改切片元素 } func main() { slice := []int{1, 2, 3} modifySlice(slice) // 传递切片引用 fmt.Println(slice) // 输出:[100 2 3] }
映射
#映射也是參考類型,在函數參數傳遞時也會傳遞其參考。與切片類似,對函數中映射進行的任何更改都將在呼叫它的函數中反映出來。
範例:
func modifyMap(m map[string]int) { m["key"] = 100 // 修改映射元素 } func main() { m := make(map[string]int) m["key"] = 1 modifyMap(m) // 传递映射引用 fmt.Println(m["key"]) // 输出:100 }
注意事項
copy
函數來建立副本。 sync.Mutex
) 來同步對切片或映射的存取。 以上是Golang函數參數傳遞中切片和映射的處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!