首页 >后端开发 >Golang >golang全局结构体初始化

golang全局结构体初始化

WBOY
WBOY转载
2024-02-12 09:33:081316浏览

golang全局结构体初始化

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 = ","

ma​​in.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中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除