go語言 函式引數傳遞詳解

2021-09-20 23:54:45 字數 2418 閱讀 3881

引數傳遞是指在程式的傳遞過程中,實際引數就會將引數值傳遞給相應的形式引數,然後在函式中實現對資料處理和返回的過程。比較常見的引數傳遞有:值傳遞,按位址傳遞引數或者按陣列傳遞引數.

1、常規傳遞

使用普通變數作為函式引數的時候,在傳遞引數時只是對變數值的拷貝,即將實參的值複製給變參,當函式對變參進行處理時,並不會影響原來實參的值。

egg:

package main
import "fmt"
func aa(a, b int)
func main()
輸出結果:

c:/users/cherry/go/src/aa/aa.exe  [c:/users/cherry/go/src/aa]

10 5

5 10

成功: 程序退出** 0.

2、指標函式

函式的變數不僅可以使用普通變數,還可以使用指標變數,使用指標變數作為函式的引數時,在進行引數傳遞時將是乙個位址,即將實參的記憶體位址複製給變參,這時變參的修改也將會影響到實參的值。

egg:

package main
import "fmt"
func aa(a *int, b *int)
func main()
執行結果:

c:/users/cherry/go/src/aa/aa.exe  [c:/users/cherry/go/src/aa]

10 5

成功: 程序退出** 0.

3、陣列元素作為函式引數

使用陣列元素作為引數時,其使用的方法和普通變數相同,既是乙個"值拷貝"

package main
import "fmt"
func aa(a int)
func main()
fmt.printf("開始呼叫函式....\n")
aa(s[3])
fmt.printf("呼叫結束...")
fmt.println(s[3])
}
執行結果:

c:/users/cherry/go/src/aa/aa.exe  [c:/users/cherry/go/src/aa]

開始呼叫函式....

列印內部的累加後的值:104

呼叫結束...4

成功: 程序退出** 0.

4、陣列名作為函式引數:和其他語言不同的是,go語言在將陣列名字作為函式引數的時候,引數傳遞既是對陣列的複製,在形參中對陣列元素的修改都不會影響到陣列元素的原來的值,code如下:

package main
import "fmt"
func aa(s [6]int)
func main()
fmt.printf("開始呼叫函式....\n")
aa(s)
fmt.printf("呼叫結束...")
fmt.println(s)
}
執行結果:

c:/users/cherry/go/src/aa/aa.exe  [c:/users/cherry/go/src/aa]

開始呼叫函式....

列印內部的累加後的值:[1 2 3 104 5 6]

呼叫結束...[1 2 3 4 5 6]

##將陣列作為引數傳入時,必須指定傳入陣列的長度和初始定義長度一樣

5、slice作為函式引數

在使用sclice作為函式引數時,進行引數傳遞將是乙個位址拷貝,即將底層陣列的記憶體位址複製給引數slice,對slice元素的操作就是對底層陣列元素的操作。

egg:

package main
import "fmt"
func aa(s1 int)
func main()
var s int = a[0:]
aa(s)
fmt.println(s[0])
fmt.println(a)
}
執行結果:

c:/users/cherry/go/src/aa/aa.exe  [c:/users/cherry/go/src/aa]

101[101 2 3 4 5]//原陣列的的值發生了變化

6、函式作為引數:go語言中,函式也作為一種資料型別,所以函式也可以作為函式的引數來使用。

package main
import "fmt"
func aa(a, b int, bb func(int, int) int)
func bb(a, b int) int
func main()
函式bb作為函式aa的形參,而變數f是乙個函式型別,作為aa()呼叫時的實參

go語言 函式引數傳遞詳解

引數傳遞是指在程式的傳遞過程中,實際引數就會將引數值傳遞給相應的形式引數,然後在函式中實現對資料處理和返回的過程。比較常見的引數傳遞有 值傳遞,按位址傳遞引數或者按陣列傳遞引數。package main import fmt func main functionvalue s 2 fmt.print...

go語言 函式引數傳遞詳解

引數傳遞是指在程式的傳遞過程中,實際引數就會將引數值傳遞給相應的形式引數,然後在函式中實現對資料處理和返回的過程。比較常見的引數傳遞有 值傳遞,按位址傳遞引數或者按陣列傳遞引數。1 常規傳遞 使用普通變數作為函式引數的時候,在傳遞引數時只是對變數值得拷貝,即將實參的值複製給變參,當函式對變參進行處理...

GO 函式引數傳遞

傳遞是指在呼叫函式時將實際引數 複製 乙份傳遞到函式中,這樣在函式中如果對引數進行修改,將不會影響到實際引數。預設情況下,go 語言使用的是值傳遞,即在呼叫過程中不會影響到實際引數。讓我們看如下例子 func main swap a func swap a 2 int 這裡swap 函式並不能交換m...