php小编草莓今天为大家介绍Golang中的全局结构体初始化。在Golang中,可以使用结构体来组织和管理数据,而全局结构体初始化是一种方便且常用的方式。通过全局结构体初始化,我们可以在程序启动时对结构体进行初始化,避免在每次使用结构体时都需要手动初始化的麻烦。下面我们将详细介绍全局结构体初始化的具体方法和注意事项,帮助大家更好地理解和使用这一功能。
问题内容
我想声明一个属于某个包的全局结构变量并初始化它。
我有以下目录结构:
main
├── symbol
| ├── symbol.go
| └── comma.go
├── main.go
└── go.mod
登录后复制
symbol.go:
package symbol
type symbol struct{
name string
format string
}
登录后复制
comma.go:
package symbol
var comma = symbol{}
comma.name = "comma"
comma.format = ","
登录后复制
main.go:
package main
import "fmt"
import "github.com/.../symbol"
func main() {
s := symbol.Comma
fmt.Println(s.Name)
}
登录后复制
当我运行它时,它显示:
syntax错误:函数体外部的非声明语句
我该如何解决这个问题?
解决方法
声明语句是包级别唯一允许的语句类型。声明
comma.name = "comma"
comma.format = ","
登录后复制
是赋值语句。赋值不是声明。
有两种方法可以解决该问题。第一种也是首选方法是使用复合文字来初始化变量声明中的值。
var comma = symbol{name: "comma", format: ","}
登录后复制
第二种方法是将赋值语句移至 init
函数:
func init() {
Comma.Name = "Comma"
Comma.Format = ","
}
登录后复制
init
函数在包初始化时自动执行。
以上就是golang全局结构体初始化的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!