欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 人文社科 > 生活经验 >内容正文

生活经验

非本地类型不能定义方法 cannot define new methods on non-local type time.Duration

发布时间:2023/11/28 生活经验 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 非本地类型不能定义方法 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。