如何在golang中使用type.NewArray初始化数组?

问题描述 投票:-3回答:1

基本上,我想在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)
}
arrays go
1个回答
1
投票

我也是新人。对我来说,这个问题看起来并不愚蠢。不幸的是,还没有人解释过如何使用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中的一些东西因为使用这么简单的东西我不得不写StringUnderlying等无用的方法,因为实现它们没用,我没有看到强制写这样的代码的原因。如果golang专家解释这个东西,我会很高兴!

© www.soinside.com 2019 - 2024. All rights reserved.