方法

Struct 方法与函数非常相似:

type User struct {
    name string
}

func (u User) Name() string {
    return u.name
}

func (u *User) SetName(newName string) {
    u.name = newName
}

唯一的区别是添加了方法接收器。它可以声明为类型的实例或指向该类型实例的指针。由于 SetName() 使实例发生变异,因此接收器必须是指针才能实现实例的永久性更改。

例如:

package main

import "fmt"

type User struct {
    name string
}

func (u User) Name() string {
    return u.name
}

func (u *User) SetName(newName string) {
    u.name = newName
}

func main() {
    var me User

    me.SetName("Slim Shady")
    fmt.Println("My name is", me.Name())
}

去游乐场