基本上,我想在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)
}
答案 0 :(得分:1)
我也是新人。对我来说,这个问题看起来并不愚蠢。不幸的是,还没有人解释过如何使用NewArray。在我看来,golang社区不是很友好我现在遇到了比真正的帮助更多的downvoting。
顺便说一下,我参加了Go之旅:)但是无论如何我很困惑这个问题如何获取一个对象的类型通常会带你到reflect package
(在类似于golang get type of an object
的google中),它什么都没有与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专家解释这个问题我会批评!