美文网首页
expected declaration, found 

expected declaration, found 

作者: Mark_Zhang | 来源:发表于2017-06-08 20:52 被阅读850次

今天偶然遇到这个错误,错误使用场景如下:

package main
import "fmt"
M := map[int]string{
  1: "a",
  2: "b",
}
func main() {
  fmt.Println(M)
}

这个是因为:=操作符导致的,:=不能用于声明全局变量!只能在函数内部使用。
:=只用来声明临时变量, 初始化全局变量需使用var关键字,正确操作如下:

package main
import "fmt"
var M = map[int]string{
  1: "a",
  2: "b",
}
func main() {
  fmt.Println(M)
}

然后,有网友问如下的操作为什么不对,而同样是在函数体外var n = 9却没有问题

package main
import "fmt"

var n int//
n = 9 // 先定义,然后进行赋值操作, 在函数体外不被允许; 而`var n = 9`是变量初始化操作,在函数体外是允许的。变量初始化和变量赋值是两个不同的概念。
func main() {
        fmt.Println(n)
}

相关文章

网友评论

      本文标题: expected declaration, found 

      本文链接:https://www.haomeiwen.com/subject/lvitqxtx.html