【定义函数】
直接上一个栗子,Go语言定义函数:
func add(a int, b int) int {
return a + b
}
一目了然,还不太习惯Go语言的命名方式, 类型为什么要写到后面?
【多个返回值】
Go函数还可以返回多个值:
func add(a int, b int)(int , int){
return a, a + b
}
【命名返回值】
func add(a int, b int) (c int) {
c = a + b
return
}
按照网上的说法,命名返回值就是,如上面的代码。函数会自动定义c,并且自动返回c。
【多个相同类型】
如果函数参数有多个相同的类型,那么写一个就可以了,命名返回值也适用。
func add(a, b int) (c int) {
c = a + b
return
}
【空白符】
函数返回多个参数,而我们只需要用到其中一个,其他参数不需要的时候可以使用空白符 '_',一个下划线。
package main
import (
"fmt"
)
func add(a, b int) (c, d int) {
c = a + b
d = a * b
return
}
func main() {
c, _ := add(3, 4)
fmt.Printf("c = %v
", c)
}
【可变参数函数】
可变参数函数很好理解了,类似C语言中的printf之类的,之后可以传入任意数量的参数。
Go语言的定义是这样的,如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。
只有一最后一个参数被记作...T,才可以是可变参数,先上一个Demo理解一下。
package main
import (
"fmt"
)
func my_print(values ...int) {
for _, v := range values {
fmt.Println(v)
}
}
func main() {
my_print(1, 2, 3)
}
my_print中的参数values相当于一个int切片,但是这里有个问题,只能传一样的类型吗?