一、函数
1、无参无返回
2、有参无返回
- 参数必为变量非常量,所以不需要var
- 不定参数类型(1、...type,2、只能放在形参最后3、传递args...4、部分传递args[:2])
3、有参有返回值
4、递归函数
5、函数类型(用于多态,比如用于回调函数)
1、使用流程
- 函数也是一种类型,通过type Funcname func(int ,int)int
- 声明一个变量
- 赋值
- 调用
2、回调函数
- 函数有一个参数是函数类型,这个函数就叫回调函数
3、匿名函数
- 闭包
f1 := func(){
fmt.Println()
}
func(){
}()//定义并调用
- 闭包捕获外部变量的特点(闭包还在使用,变量就未释放)
4、defer延迟调用,函数结束前调用(清理功能)
- 先进后出(栈)
- 出错依然执行
- 与匿名函数结合使用(会先传参,后面参数的变化对其执行无影响)
5、Init函数
- 被导入就会执行init函数
6、变量作用范围
- 局部变量
- 全局变量
7、工程管理
1.配置
- src文件夹
- goPath配置
2.导入包
- import . "fmt" fmt.Println ==.Println
- import io "fmt" 包名-别名
- 忽略此包 import _ "fmt"
3.工程配置
1)必须放在src文件夹下;
2)设置GOPATH环境变量;
3)同一个目录,包名必须一样;
4)同一个目录,调用别的文件函数,直接调用,无需包名;5)函数外部调用必须首字母大写
4.多文件
1)需要配置GOPATH环境变量,配置src同级目录的绝对路径
2)需要自动生成bin或者pkg目录,需要使用go install命令(需要配置GOBIN环境变量)