go - 当变量已经声明时,为什么我必须将类型传递给 make 函数?

标签 go

我想使用匿名结构来做一些事情。

var users []struct{
    Name string `json:"name,omitempty"`
    Age int
}

我必须再次编写类型来设置值

users = make([]struct{
    Name string `json:"name,omitempty"`
    Age int
}, 0, 10)

如果我坚持使用匿名结构,有没有办法让它更体面?

(如果不是,我想知道为什么golang的设计会做出这样的功能...)

最佳答案

匿名结构对于一次性使用非常方便。

如果您多次使用它,请定义一个命名结构类型。

如果你只在一个函数中使用它,你可以在那个特定函数的范围内定义类型,所以很明显它不能在其他地方使用:

func myfunc() {
    type MyType struct {
        Name string
    }
    m := MyType{Name: "Hello, World!"} // this type can only be used within this func
    fmt.Println(m)
}

关于go - 当变量已经声明时,为什么我必须将类型传递给 make 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962521/

相关文章:

selenium - Go - 我如何安装selenium以在go语言中使用它?

concurrency - sync.WaitGroup 不等待

regex - 去正则表达式解析字符串到环境变量

go - 将通用结构/接口(interface)传递给函数并返回它

go - 通过反射获取 sql.NullString 的值

使用库进行数据库迁移

go - 在 go 中读取 cookie 的最短、准确且跨浏览器兼容的方法是什么?

go - CGO 从 C ** float 得到一个 [][]float32

sql-server - Go语言: JOIN sql with two different connections/databases

在带有指针的函数循环中调用的 Goroutine 会覆盖值吗?