2 回答
TA贡献1848条经验 获得超10个赞
在 Go 中您可以声明的内容const仅限于基本类型,如 ints、strings、bools 等。无法将非基本类型(如 structs、maps、slice、funcs 等)声明为const.
因此,要达到目的,Tables.UsersTable您可以将您的声明声明Tables为 struct var:
var Tables = struct{
UsersTable string
PostsTable string
}{
UsersTable: "users",
PostsTable: "posts",
}
请注意,由于这是一个变量而不是常量,因此没有任何东西可以保护字段的值不被恶意或错误修改。
或者,您的另一个选择是创建一个新包,将其命名为tables,并在其中声明您的常量。
package tables
const (
UsersTable = "users"
PostsTable = "posts"
)
然后只需导入包即可使用
import (
"fmt"
"path/to/tables"
)
func main() {
fmt.Println(tables.UsersTable)
}
请注意,第一个解决方案,如果由另一个包导入,将导致fmt.Println(somepkg.Tables.UsersTable) (除非.使用导入),这可能不是您正在寻找的,也可能是。
TA贡献1809条经验 获得超8个赞
你可以这样声明枚举:
const (
Running = iota // value --> 0
Stopped // value --> 1
Rebooting // value --> 2
Terminated // value --> 3
)
地图声明也是如此。希望这可以帮助你。
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报