关于匿名组合的语法
在许式伟的《Go语言编程》一书中,第83页的末尾,有这样的一部分内容:
在Go语言官方网站提供的Effective Go中曾提到匿名组合的一个小价值,值得在这里再提一 下。首先我们可以定义如下的类型,它匿名组合了一个 log.Logger 指针:
type Job struct {
Command string
*log.Logger
}
在合适的赋值后,我们在 Job 类型的所有成员方法中可以很舒适地借用所有 log.Logger 提 供的方法。比如如下的写法:
func (job *Job)Start() {
job.Log("starting now...")
job.Log("started.")
}
这段代码我总是编译不过去,总是告诉我:
./main.go:17: job.Log undefined (type *Job has no field or method Log)
这是怎么回事呢?
是我的方法有问题,还是许式伟写的不对?
共 2 个回复
jimmykuu
这段代码确实Effective Go里面的:http://golang.org/doc/effective_go.html#embedding。
大概是Effective Go写的比较早的缘故,里面适用的log package和目前的并不一样,现在的
log.Logger
并没有Log
方法,要想跑通,你可以换成Println
方法。qkevin123
嗨,犯了这么个低级错误!
谢了!