【定义函数】
直接上一个栗子,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切片,但是这里有个问题,只能传一样的类型吗?