【问题标题】:Is it possible to declare a map at package level in golang?是否可以在 golang 的包级别声明地图?
【发布时间】:2019-04-27 12:34:34
【问题描述】:

我想要一个制作全球地图。我正在尝试以下

package main

import "fmt"

globalMap := make(map[string]string)

func main() {
    globalMap["a"] = "A"
    fmt.Println(globalMap)
}

它在globalMap := make(map[string]string) 上给了我以下编译错误:

expected declaration, found 'IDENT' mas
non-declaration statement outside function body

查看错误,我理解它不允许我创建全局地图。创建全球地图的最佳方法是什么?

谢谢。

【问题讨论】:

  • 所有反对票是怎么回事?

标签: go


【解决方案1】:

你不能在函数体之外使用:=语法,但是你可以使用普通的变量声明语法:

var globalMap = make(map[string]string)

【讨论】:

  • 有没有解释为什么:= 仅限于函数体?或者为什么全局变量必须使用var
  • @ffledgling 是为了简化解析,这可能会使编译器更快
  • 我现在的问题是如何为(1)多返回值函数,(2)const 多返回值函数做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 2019-02-24
相关资源
最近更新 更多