2 回答
TA贡献1810条经验 获得超5个赞
我希望有效地拥有一些在所有方面都表现为 int 的东西,但有额外的方法。我希望能够通过某种方式用它来代替 int。
目前在 Go 中这是不可能的,因为它不支持任何类型的泛型。
您可以实现的最佳效果如下:
package main
type Integer int
func (i Integer) Add(x Integer) Integer {
return Integer(int(i) + int(x))
}
func AddInt(x, y int) int {
return x + y
}
func main() {
x := Integer(1)
y := Integer(2)
z := 3
x.Add(y)
x.Add(Integer(z))
x.Add(Integer(9))
# But this will not compile
x.Add(3)
# You can convert back to int
AddInt(int(x), int(y))
}
TA贡献1853条经验 获得超9个赞
您可以基于 int 声明一个新类型,并使用它:
type newint int
func (n newint) f() {}
func intFunc(i int) {}
func main() {
var i, j newint
i = 1
j = 2
a := i+j // a is of type newint
i.f()
intFunc(int(i)) // You have to convert to int
}
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报