【发布时间】:2014-09-07 20:01:50
【问题描述】:
package main
import "fmt"
type Number int
func (n *Number) IncreaseMe(i int) {
*n += i
}
func main() {
n := Number(10)
n.IncreaseMe(90) // n is now supposed to be 100
fmt.Println(n)
}
运行上面的代码时,它给了我错误消息
无效操作:*n += i(不匹配的类型 Number 和 int)
这是意料之中的,因为它试图对不同类型的变量进行数学运算。
然后我尝试了
*n.(int) += i
这告诉编译器不要担心,因为 *n 可以安全地被视为整数,这导致我
invalid type assertion: n.(int) (non-interface type *Number on left)
我相信这种情况正在发生,因为类型断言仅适用于接口,而不适用于自定义类型。
那么有什么解决办法呢?
【问题讨论】:
标签: go