
square-gopher.png
函數(shù)中的參數(shù)
定義函數(shù)可以沒有任何參數(shù)就像 main 函數(shù)
func main(){
}
定義函數(shù)的參數(shù)時和其他語言沒有什么不同,指定參數(shù)名稱和參數(shù)類型
func sayMessage(msg string){
// body
}
如果參數(shù)類型一致我們可以省略 greeting 后面指定類型
func sayGreeting(greeting, name string){
fmt.Println(greeting, name)
}
我們可以嘗試在 sayGreeting 內(nèi)部修改 name 這個變量,因為函數(shù)作用域這些修改name 不會影響到函數(shù)外面的 name 值,這是大家的嘗試。
func sayGreeting(greeting, name string){
fmt.Println(greeting, name)
name ="matthew"
fmt.Println(name)
}
greeting := "hello"
name := "zidea"
sayGreeting(greeting,name)
fmt.Println(name)
從結(jié)果來看
hello zidea
matthew
zidea
外面的 name 值依舊是 zidea 沒有發(fā)生變化
我們可以將傳遞變量引用修改為將變量的地址作為參數(shù)傳給函數(shù)
func sayGreeting(greeting, name *string){
fmt.Println(*greeting, *name)
*name ="matthew"
fmt.Println(*name)
}
hello zidea
matthew
matthew
func main(){
fmt.Println(eval(3,4, "*"))
greeting := "hello"
name := "zidea"
fmt.Println(greeting, name)
}
我們也可以通過(...)來實現(xiàn)函數(shù)動態(tài)地傳入多個參數(shù),這和 es6 語法很相似。

you-look-familiar.jpg
func sum(values ...int){
fmt.Println(values)
result := 0
for _, v := range values{
result += v
}
fmt.Println("The sum is ", result)
}