Go語言按值調用
按值傳遞函數參數拷貝參數的實際值到函數的形式參數的方法調用。在這種情況下,參數在函數內變化對參數不會有影響。
默認情況下,Go編程語言使用調用通過值的方法來傳遞參數。在一般情況下,這意味著,在函數內碼不能改變用來調用所述函數的參數。考慮函數swap()的定義如下。
/* function definition to swap the values */ func swap(int x, int y) int { var temp int temp = x /* save the value of x */ x = y /* put y into x */ y = temp /* put temp into y */ return temp; }
現在,讓我們通過使實際值作為在以下示例調用函數swap():
package main import "fmt" func main() { /* local variable definition */ var a int = 100 var b int = 200 fmt.Printf("Before swap, value of a : %d\n", a ) fmt.Printf("Before swap, value of b : %d\n", b ) /* calling a function to swap the values */ swap(a, b) fmt.Printf("After swap, value of a : %d\n", a ) fmt.Printf("After swap, value of b : %d\n", b ) } func swap(x, y int) int { var temp int temp = x /* save the value of x */ x = y /* put y into x */ y = temp /* put temp into y */ return temp; }
讓我們把上麵的代碼放在一個C文件,編譯並執行它,它會產生以下結果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200
這表明,參數值冇有被改變,雖然它們已經在函數內部改變。