1,函数使用细节
《1,函数可以有多个参数以及多个返回值(值类型,引用数据类型均可)
《2,函数命名规则与标识符规则一样,a-z大小写,0-9,和下划线,且开头不能为数字,首字母大写表示public,小写private
《3,函数内的变量是局部的对外不生效
《4,值类型都是拷贝了一份到函数中使用,不影响原来的值,如果想修改原本的值可以传递指针&变量名
《5,go语言函数不能重载
《6,go语言中函数也是一种数据类型,可以赋值调用等等
《7,可以对函数的返回值命名
我是分割线-----------------------------------------------------------------------------------------------------------------
2,自定义数据类型
语法
如下forge实际指向的是一个函数类型
type forge func(i,k int) int
那么我们再定义一个其他函数就可以这么使用
func yh() forge {
return func(i, k int) int {
return 3
}
}
其他类型同理
我是分割线-----------------------------------------------------------------------------------------------------------------
3,init函数
每个.go文件都可以有一个init函数
它会在初始化全局变量,main函数之前运行
通常用来进行一些初始化
如果你引入的包中也有init函数,会先初始化引入包的init
4,匿名函数
如果你希望只使用一次那么你可以使用匿名函数
语法
var g=func() forge{
return func(i, k int) int {
return 6
}
}
5,闭包结构
定义:闭包就是一个函数和与其相关的引用环境所组成的一个整体
经典例子
h:=name()
fmt.Printf("%v\n",h())
fmt.Printf("%v\n",h())
fmt.Printf("%v\n",h())
fmt.Printf("%d\n",name()())
fmt.Printf("%d\n",name()())
fmt.Printf("%d\n",name()())
func name() func() int {
b:=1
fun:=func() int {
b++
return b
}
return fun
}
结果
234
222
变量b会随着name函数的调用而创建