基本上,我想在types
模块中使用Array类型结构,但我无法初始化它。你必须传递Type作为第一个参数?
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社区不是很友好我现在遇到了比真正的帮助更多的downvoting。
顺便说一句,我参加了Go之旅:)但无论如何我很困惑这个问题如何获得一个对象的类型通常会带你到reflect package
(键入像golang get type of an object
这样的谷歌)与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专家解释这个东西,我会很高兴!