函数方法和接口
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())
}