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全局结构体初始化的详细内容。更多信息请关注PHP中文网其他相关文章!