Go:需要设置属性但没有指针接收器?

时间:2015-03-08 18:41:56

标签: go

package main

import "fmt"

type MyClass struct{
    data    string
}

func (this MyClass) MyMethod() {
    this.data = "Changed!"
}

func main() {
    obj := MyClass{}

    obj.MyMethod()

    fmt.Println(obj)
}

我需要data属性被MyMethod()更改,但我无法将接收器类型更改为指针(func (this *MyClass)),因为它必须满足接收器不是指针的接口,这可以通过其他方式实现吗?

1 个答案:

答案 0 :(得分:4)

您需要使用指针接收器,而不是值接收器:

func (this *MyClass) MyMethod() {
    this.data = "Changed!"
}

play.golang.org中查看修改后的示例:

输出结果为:

{Changed!}