gpt4 book ai didi

go - 如何通过扩展类型向 int 这样的基本类型添加功能?

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:47 24 4
gpt4 key购买 nike

我希望能够向现有类型(例如 int)添加方法:

func (i *int) myfunction {
...
}

但是,这显然会产生错误。

cannot define new methods on non-local type

Google 的最高搜索结果是 github issue正是因为这件事而反对 golang。令人欣慰的是,答案是您已经可以通过其他方式获得此功能,因此他们不会对语言进行此更改。

无益, react 含糊

type extended Existing

并且它没有明确显示如何实现 OP 要求的内容,即:

func (a int) sum(b int) (total int) {
total = a + b
return
}

那么,如何扩展一个 int 来添加功能呢?它仍然可以像 int 一样使用吗?如果是这样,如何?

我想有效地拥有在所有方面都像 int 一样运行的东西,但有额外的方法。我希望能够通过某种方式以各种方式使用它来代替 int。

最佳答案

I would like to effectively have something that behaves in all ways as an int, but has additional methods. I would like to be able to use this in place of an int in all ways by some means.

目前在 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))
}

关于go - 如何通过扩展类型向 int 这样的基本类型添加功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57701678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com