美文网首页
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