如何在 Golang 中声明常量映射?

新手上路,请多包涵

我试图在 Go 中声明为常量,但它抛出了一个错误。谁能帮我解决在 Go 中声明常量的语法问题?

这是我的代码:

 const romanNumeralDict map[int]string = {
  1000: "M",
  900 : "CM",
  500 : "D",
  400 : "CD",
  100 : "C",
  90  : "XC",
  50  : "L",
  40  : "XL",
  10  : "X",
  9   : "IX",
  5   : "V",
  4   : "IV",
  1   : "I",
}

这是错误

# command-line-arguments
./Roman_Numerals.go:9: syntax error: unexpected {

原文由 samol 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 466
2 个回答

您的语法不正确。要制作文字映射(作为伪常量),您可以执行以下操作:

 var romanNumeralDict = map[int]string{
  1000: "M",
  900 : "CM",
  500 : "D",
  400 : "CD",
  100 : "C",
  90  : "XC",
  50  : "L",
  40  : "XL",
  10  : "X",
  9   : "IX",
  5   : "V",
  4   : "IV",
  1   : "I",
}

func 中,您可以像这样声明它:

 romanNumeralDict := map[int]string{
...

在 Go 中没有常量映射这样的东西。可以在 此处 找到更多信息。

在 Go 操场上尝试一下。

原文由 squiguy 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以通过多种不同的方式创建常量:

 const myString = "hello"
const pi = 3.14 // untyped constant
const life int = 42 // typed constant (can use only with ints)

您还可以创建一个枚举常量:

 const (
   First = 1
   Second = 2
   Third = 4
)

您不能创建映射、数组的常量,它是用 有效的 go 编写的:

Go 中的常量就是常量。它们是在编译时创建的,即使在函数中定义为局部变量时也是如此,并且只能是数字、字符(符文)、字符串或布尔值。由于编译时限制,定义它们的表达式必须是常量表达式,可由编译器计算。例如,1< 是常量表达式,而 math.Sin(math.Pi/4) 不是,因为对 math.Sin 的函数调用需要在运行时发生。

原文由 Salvador Dali 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题