前言
如果有参数,则需提供参数类型
如果有返回值,则需提供返回值类型
结构
func <func_name> (<args> args_type) <rtn_value_type> {
...
return rtn_value
}
函数参数
函数参数是形参,调用函数并传递给函数的参数是实参,形参和实参类型要一致
函数参数(形参)仅在函数体内生效
在函数没有被调用的时候,函数参数(形参)不会分配内存单元
当函数参数(形参)接收了一个实参内存值
的时候,函数体内的函数参数
将和实参
没有任何关联
当函数参数(形参)接收了一个实参内存地址
的时候,函数体内的&函数参数
将受到实参
影响
参数个数
参数可以有多个,只需要在形参类型前添加...
package main
import "fmt"
func main(){
print(1,2,3,4,5)
}
func print (a ...int) {
for _,v := range a{
fmt.Println(v)
}
}
_
表示接收无用的值
用例
package main
import "fmt"
func fcLen(yp *string) int {
fmt.Printf("传递的形参是:%p,%s",yp, *yp) // %p标识指针变量
return len(*yp)
}
func main(){
a := "abc"
b := fcLen(&a)
fmt.Println(b)
}
递归函数
递归函数在嵌套的时候,需要一个退出条件,从而防止死循环
例如
func jiecheng(i int)int {
if i > 1 {
result = i * jiecheng(i-1)
return result
}
return 1
}
特殊函数
init() 包内的init()在包被引用的时候,会自动执行。另外引用包的时候,如果通过_ "package_name"
引用,表示仅引用包里的init()函数
内置函数
make()用于chan、map以及切片创建
new(