函数方法和接口

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())
}