基本上,我想在 types
模块中使用 Array 类型结构,但我无法对其进行初始化。您必须将什么作为第一个参数传递给类型?
package main
import (
"fmt"
"go/types"
)
func main() {
var a *types.Array
a = types.NewArray(types.Int, 2) //error here
fmt.Println(a)
}
最佳答案
我也是新手。对我来说,这个问题看起来并不愚蠢。不幸的是,还没有人解释如何使用 NewArray。在我看来,golang 社区不是很友好我现在遇到的反对票多于真正的帮助。
顺便说一句,我参加了 Go 之旅 :) 但无论如何,我很困惑如何获取对象类型的问题通常会将您带到 reflect package
(在 google 中输入类似 golang get 的内容对象的类型
),它与 types.Type
没有任何共同之处。我花了一些时间弄清楚如何获取 types.Type
对象,我认为对于有其他语言经验的人来说这并不明显。
因此,要使用 NewArray
方法,您需要传递一个实现了 types.Type
的对象,正如 mkopriva 指出的那样。我最终得到了
package main
import (
"fmt"
"go/types"
)
type NewType int
func (v NewType) String() string {
return string(v)
}
func (v NewType) Underlying() types.Type {
return types.Type(v)
}
func main() {
var a *types.Array
a = types.NewArray(NewType(0), 2)
fmt.Println(a)
}
使用了具有底层 int
的新类型。我想我还不了解 golang 中的某些东西,因为为了使用如此简单的东西,我不得不编写诸如 String
和 Underlying
之类的无用方法,它们由于实现而无用,我看不出有什么理由被迫编写这样的代码。如果 golang 专家解释一下这些东西,我将不胜感激!
关于arrays - 如何在 golang 中使用 type.NewArray 初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47681138/