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

标签 arrays go

基本上,我想在 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 中的某些东西,因为为了使用如此简单的东西,我不得不编写诸如 StringUnderlying 之类的无用方法,它们由于实现而无用,我看不出有什么理由被迫编写这样的代码。如果 golang 专家解释一下这些东西,我将不胜感激!

关于arrays - 如何在 golang 中使用 type.NewArray 初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47681138/

相关文章:

javascript - 如何使用字符串作为选择器在对象中设置数据?

c# - 如何在C#中将字符串分隔成数组?

php - 使用数组仅将选定的值传递给函数

go - 如何使用 aerospike 客户端进行“触摸获取”

Gorm 创建并返回值 Many2many

go - 确保 goroutine 清理,最佳实践

java - 我的表输出的百分比值不正确

json - 检查 JSON 是对象还是数组

multithreading - golang写文件阻塞了很多goroutine,为什么不创建很多线程?

c++ - 如何制作单元格编号从负数到正数的数组?