Golang學習筆記(十)函式申明及變數作用域
阿新 • • 發佈:2018-12-04
標準函式格式:func 函式名 (引數列表) (返回值列表)
func funcName (parametername1 type1,parametername2 type2...) (output1 type1,output2 type2...)
1、可以使用可變引數:func funcName(arg ...int)表示接受不定數量的int型別引數。
2、Golang的引數列表,如果相鄰的兩個或多個引數資料型別是一樣的,那麼只用在最後一個引數新增資料型別。
3、Golang可以返回多個值,函式申明時如果有返回值,必須在函式體中使用return關鍵字提供返回值。
4、返回值可以是返回資料的資料型別,或者是變數+變數型別的組合。
5、如果只有一個返回值且不申明返回值變數,那麼可以省略包括返回值的括號。
首先申明兩個全域性變數。
var a int = 7
var b int = 9
接著寫一段標準的函式:
func sum1(a, b int) int {
a++
b += 2
c := a + b
fmt.Printf("sum()中a=%d\n", a)
fmt.Printf("sum()中b=%d\n", b)
fmt.Printf("sum()中c=%d\n", c)
return c
}
在main()中呼叫函式sum1(),將全域性變數a、b賦為引數,將返回c的值19,並打印出結果。
sum()中a=8 sum()中b=11 sum()中c=19
再來一個帶返回變數的例子:
func sum2(a, b int) (dd int) {
a++
b += 2
c := a + b
fmt.Printf("sum()中a=%d\n", a)
fmt.Printf("sum()中b=%d\n", b)
fmt.Printf("sum()中c=%d\n", c)
dd = c
return
}
這裡的return雖然什麼都沒有帶,但還是會返回dd的數值。
func sum2(a, b int) (dd int) { a++ b += 2 c := a + b fmt.Printf("sum()中a=%d\n", a) fmt.Printf("sum()中b=%d\n", b) fmt.Printf("sum()中c=%d\n", c) return c }
如果寫成這樣,實際返回的其實也是dd,而不是c。
所以在函式中,可以直接將最後的值寫在返回引數中:
func sum3(a, b int) (c int) {
a++
b += 2
c = a + b
fmt.Printf("sum()中a=%d\n", a)
fmt.Printf("sum()中b=%d\n", b)
fmt.Printf("sum()中c=%d\n", c)
return
}
PS:這時的c就不再用申明瞭,因為在返回引數裡已經申明過了。
多返回值的函式:
func sum4(a, b int) (c, d int) {
a++
b += 2
c = a + b
d = a * b
return
}
這個函式執行後,必須要有兩個變數來接受返回值。
x,y = sum4(a, b)
如果只想取回其中一個變數而另外一個沒有用的話,可以用匿名變數_來接收。
_,c = sum4(a, b)
這麼來,只有c接受了sum4()函式的第二個返回值。