2 回答
TA贡献1877条经验 获得超1个赞
方法
关于接收者的指针与值的规则是值方法可以在指针和值上调用,但指针方法只能在指针上调用。这是因为指针方法可以修改接收者;在值的副本上调用它们将导致这些修改被丢弃。
因此,要使您的Engine Start方法工作,请使用指针接收器,因为该方法会修改接收器。例如,
package main
import (
"fmt"
)
type Engine struct {
cylinders int
started bool
}
func (engine *Engine) Start() {
fmt.Println("Inside the Start() func, started starts off", engine.started)
engine.started = true
fmt.Println("Inside the Start() func, then turns to", engine.started)
// this is a sanity check
}
func (engine *Engine) IsStarted() bool {
return engine.started
}
func main() {
var engine Engine
fmt.Println(engine.IsStarted())
engine.Start()
fmt.Println(engine.IsStarted())
}
输出:
false
Inside the Start() func, started starts off false
Inside the Start() func, then turns to true
true
- 2 回答
- 0 关注
- 177 浏览
添加回答
举报