我从 GO 语言开始,遇到了一个我无法弄清楚的错误。如何创建模块中所有函数都可以使用的全局切片?这是我所拥有的:package mainimport ( "fmt")type Req struct { Req int Name string}var Reqs []Reqfunc ReadReqs(fp string) { var CReq Req; CReq.Req = 1 CReq.Name = "first" Reqs := append(Reqs, CReq)}func main() { Reqs := make([]Req, 0) if len(Reqs) > 0 { fmt.Println(Reqs[0]) } fmt.Println(Reqs)}由于以下错误,此代码将无法编译:./question.go:18: Reqs declared and not used我在想声明 var Reqs []Req 应该声明变量,但它似乎没有意识到它在 ReadReqs 函数中。我确实意识到全局变量很糟糕,但我想在这个简单的程序中使用全局变量。
3 回答
冉冉说
TA贡献1877条经验 获得超1个赞
好的,首先我建议您在继续之前阅读Effective Go。
您正在使用以下方法声明全局变量:
var Reqs []Req
然后使用以下命令重新声明具有相同名称的变量:
Reqs := ......
您正在声明两个不同的变量。
var Name 类型也初始化变量:
var s string
相当于:
s := ""
所以这使得以下行无用:
Reqs = make([]Req, 0)
你可以在这里尝试你的固定代码(Golang Play)。
- 3 回答
- 0 关注
- 237 浏览
添加回答
举报
0/150
提交
取消