非本地类型不能定义方法 cannot define new methods on non-local type time.Duration
生活随笔
收集整理的这篇文章主要介绍了
非本地类型不能定义方法 cannot define new methods on non-local type time.Duration
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
能够随意地为各种类型起名字,是否意味着可以在自己包里为这些类型任意添加方法 ? 参见下面的代码演示 :
package mainimport "time"type MyDuration = time.Durationfunc (m MyDuration) Set() {
}func main() {
}
编译后报错:
./temp.go:7:6: cannot define new methods on non-local type time.Duration
编译器提示:不能在一个非本地的类型 time.Duration 上定义新方法。
非本地方法指的就是使用 time.Duration 的代码所在的包,也就是 main 包。因为 time.Duration 是在 time 包中定义的,在 main 包中使用。 time.Duration 包与 main 包不在同 一个包中,因此不能为不在一个包中的类型定义方法。
解决这个问题有下面两种方法 :
- 将第 8 行修改为
type MyDuration time.Duration,也就是将MyDuration从别名改为类型; - 将
MyDuration的别 名定 义放在time包中 ;
总结
以上是生活随笔为你收集整理的非本地类型不能定义方法 cannot define new methods on non-local type time.Duration的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 2022-2028中国橡胶衬里行业全景调
- 下一篇: 2022-2028年中国无溶剂聚氨酯复膜