Go语言报错cannot define new methods on non-local type
今天在写一段Golang代码时报错:package mainimport("fmt")func Add(a ,b int){//函数fmt.Println(a+b)}func (a int) Add (b int){//方法fmt.Println(a+b)}报错信息如下:cannot define new methods on non-local
·
今天在写一段Golang代码时报错:
package main
import(
"fmt"
)
func Add(a ,b int){ //函数
fmt.Println(a+b)
}
func (a int) Add (b int){ //方法
fmt.Println(a+b)
}
报错信息如下:
cannot define new methods on non-local type int
上网搜了下原来原因是 go语言不允许为简单的内置类型添加方法。
这里需要用type来临时定义一个和int具有同样功能的类型。不过需要强调的是,这个类型不能看成是int类型的别名,它们属于不同的类型,不能直接相互赋值。
修改后的代码如下:
package main
import(
"fmt"
)
type myInt int
func Add(a ,b int){ //函数
fmt.Println(a+b)
}
func (a myInt) Add (b myInt){ //方法
fmt.Println(a+b)
}
func main() {
a, b := 3,4
var aa,bb myInt = 3,4
Add(a,b)
aa.Add(bb)
}
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)