3 回答
TA贡献1825条经验 获得超4个赞
你需要
var test = "This is a test"
:= 仅适用于函数,小写的 't' 仅对包可见(未导出)。
更彻底的解释
test1.go
package main
import "fmt"
// the variable takes the type of the initializer
var test = "testing"
// you could do:
// var test string = "testing"
// but that is not idiomatic GO
// Both types of instantiation shown above are supported in
// and outside of functions and function receivers
func main() {
// Inside a function you can declare the type and then assign the value
var newVal string
newVal = "Something Else"
// just infer the type
str := "Type can be inferred"
// To change the value of package level variables
fmt.Println(test)
changeTest(newVal)
fmt.Println(test)
changeTest(str)
fmt.Println(test)
}
test2.go
package main
func changeTest(newTest string) {
test = newTest
}
输出
testing
Something Else
Type can be inferred
或者,对于更复杂的包初始化或设置包所需的任何状态,GO 提供了一个 init 函数。
package main
import (
"fmt"
)
var test map[string]int
func init() {
test = make(map[string]int)
test["foo"] = 0
test["bar"] = 1
}
func main() {
fmt.Println(test) // prints map[foo:0 bar:1]
}
init 将在 main 运行之前被调用。
TA贡献1784条经验 获得超2个赞
如果您不小心使用“ Func ”或“ function ”或“ Function ”代替“ func ”,您还将获得:
函数体之外的非声明语句
发布此信息是因为我最初在搜索时来到这里以找出问题所在。
- 3 回答
- 0 关注
- 255 浏览
添加回答
举报