golang全局结构体初始化

2024年 2月 12日 45.2k 0

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全局结构体初始化的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论