卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章35439本站已运行396

golang全局结构体初始化

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函数在包初始​​化时自动执行。

卓越飞翔博客
上一篇: 如何处理 Go 的 firebase admin sdk 错误?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏