expected declaration, found 'IDENT'

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

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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,881评论 2 9
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,091评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,448评论 0 4
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,096评论 0 5
  • 午阳甚暖,怎敌秋风狂奏? 细水长流,奈何思念成魔 衣单风侵透,心有魔护体 只觉心忧忧,不知凉颤颤。
    天海决阅读 1,670评论 0 0