golang全局结构体初始化
短信预约 -IT技能 免费直播动态提醒
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全局结构体初始化的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341