函数方法和接口
Go程序函数启动顺序的示意图:
函数
// 具名函数func Add(a, b int) int { return a+b}// 匿名函数var Add = func(a, b int) int { return a+b}// 多个参数和多个返回值func Swap(a, b int) (int, int) { return b, a}// 可变数量的参数// more 对应 []int 切片类型func Sum(a int, more ...int) int { for _, v := range more { a += v } return a}
- Go语言函数的递归调用深度逻辑上没有限制
因此内存地址可能会随时发生变化,不要假设变量在内存中的位置是固定不变的,指针随时可能会变化
方法
- 面向对象里的函数
// 关闭文件func (f *File) CloseFile() error { // ...}// 读文件数据func (f *File) ReadFile(offset int64, data []byte) int { // ...}
接口
// 定义接口type Service interface { GetUser() string}// 实现类type UserService struct {}// 隐式实现接口方法func (us *UserService)GetUser() string{ return "user"}func main(){ // 多态 var service Service = new(UserService) fmt.Println(service.GetUser())}