首页 > 解决方案 > 当变量已经声明时,为什么我必须传递类型来生成函数?

问题描述

我想使用匿名结构做某事。

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

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

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

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

(如果没有,我想知道为什么 golang 设计会产生这样的功能......)

标签: go

解决方案


匿名结构很方便一次性使用。

如果你不止一次使用它,那么定义一个命名的结构类型。

如果只在单个函数中使用它,则可以在该特定函数的范围内定义类型,因此很明显它不能在其他地方使用:

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

推荐阅读