函數(shù)可以沒有參數(shù),也可以有多個參數(shù)讲弄。
package main
import(
"fmt"
)
//有兩個參數(shù)的函數(shù)
func add(x,y int) int {
return x + y
}
//沒有參數(shù)的函數(shù)
func isay() string{
return "I say the number is"
}
//主函數(shù)
func main(){
fmt.Println(isay(), add(2, 5))
}
是不是奇怪add函數(shù)的參數(shù)的寫法?
你沒看錯依痊,Go語言可以這樣寫避除。如果多個參數(shù)都是同一個數(shù)據(jù)類型的話,前面的參數(shù)可以略寫數(shù)據(jù)類型胸嘁,只要最后一個寫類型就可以了瓶摆。
(x int, y int)等同于(x,y int)
【注意】Go語言里,數(shù)據(jù)類型都寫在變量名之后性宏。
Go語言里群井,函數(shù)還可以有任意數(shù)量的返回值,這給程序設(shè)計(jì)提供了很大的便利毫胜。
package main
import(
"fmt"
)
//有兩個參數(shù)的函數(shù)
func add(x,y int) int {
return x + y
}
//沒有參數(shù)的函數(shù)
func isay() string{
return "I say the number is"
}
//多個返回值的函數(shù)
func swap(x,y string) (string, string, string) {
return y, x, "!!!"
}
func main(){
fmt.Println(isay(), add(2, 5))
fmt.Println(swap("world", "Hello"))
}
新增加的swap函數(shù)返回了三個字符串书斜,不但交換了參數(shù)的順序,還給出了一個"!!!"的返回值酵使。
函數(shù)還可以“命名返回值”荐吉,這樣的寫法,在return后可以不寫任何代碼口渔。函數(shù)體如下:
func split(sum int) (x,y int) {
x = sum * 4 / 9
y = sum - x
return
}
這樣沒有參數(shù)的return样屠,返回各個返回變量的當(dāng)前值。這種用法被稱為“裸”返回搓劫。
【注意】這樣的用法最好只在較短的函數(shù)體使用瞧哟。長的函數(shù)會影響代碼的可讀性混巧。返回值的名稱枪向,應(yīng)當(dāng)具有一定的意義,可增加代碼的可讀性咧党。
完整代碼
package main
import(
"fmt"
)
//有兩個參數(shù)的函數(shù)
func add(x,y int) int {
return x + y
}
//沒有參數(shù)的函數(shù)
func isay() string{
return "I say the number is"
}
//多個返回值的函數(shù)
func swap(x,y string) (string, string, string) {
return y, x, "!!!"
}
//命名返回值
func split(sum int) (x,y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main(){
fmt.Println(isay(), add(2, 5))
fmt.Println(swap("world", "Hello"))
fmt.Println(split(197))
}