golang 函數的參數傳遞采用傳值傳遞機制,對值類型參數的修改不影響實際參數,而對引用類型參數的修改會影響實際參數;指針參數允許間接訪問并修改實際參數。
GoLang 函數中的參數傳遞
簡介
在 GoLang 中,參數傳遞遵循傳值傳遞機制。這意味著在函數內部對參數進行的任何更改不會影響函數外部的實際參數。
參數類型
GoLang 函數的參數可以是值類型或引用類型。
值類型:整型、浮點型、布爾型、字符串等基本類型。
引用類型:數組、切片、結構體、指針等引用實際數據的類型。
值類型
對于值類型參數,函數內部對參數的任何修改都不會影響實際參數。這是因為在函數調用期間,會創建參數的副本。
func swap(a, b int) { a, b = b, a // 在函數內交換 a 和 b 的副本 } func main() { x := 5 y := 7 swap(x, y) fmt.Println(x, y) // 輸出 5 7 }
登錄后復制
引用類型
對于引用類型參數,函數內部對參數的修改會影響實際參數。這是因為函數直接操作實際數據。
func swap(a, b []int) { a[0], b[0] = b[0], a[0] // 交換切片的第一個元素 } func main() { x := []int{5} y := []int{7} swap(x, y) fmt.Println(x, y) // 輸出 [7] [5] }
登錄后復制
指針
指針類型提供了一種間接訪問值的機制。通過指針傳遞引用類型時,可以修改實際參數。
func swap(a, b *int) { *a, *b = *b, *a // 交換指針指向的值 } func main() { x := 5 y := 7 swap(&x, &y) fmt.Println(x, y) // 輸出 7 5 }
登錄后復制
實戰案例
以下是一個使用函數參數傳遞的實際案例:
type Book struct {
登錄后復制