非本地类型不能定义方法 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年中国无溶剂聚氨酯复膜