函数方法和接口

Go程序函数启动顺序的示意图:

2021916171125

函数

// 具名函数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}

因此内存地址可能会随时发生变化,不要假设变量在内存中的位置是固定不变的,指针随时可能会变化

方法

// 关闭文件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())}