2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
在 Go 中您可以聲明的內(nèi)容const僅限于基本類型,如 ints、strings、bools 等。無法將非基本類型(如 structs、maps、slice、funcs 等)聲明為const.
因此,要達(dá)到目的,Tables.UsersTable您可以將您的聲明聲明Tables為 struct var:
var Tables = struct{
UsersTable string
PostsTable string
}{
UsersTable: "users",
PostsTable: "posts",
}
請(qǐng)注意,由于這是一個(gè)變量而不是常量,因此沒有任何東西可以保護(hù)字段的值不被惡意或錯(cuò)誤修改。
或者,您的另一個(gè)選擇是創(chuàng)建一個(gè)新包,將其命名為tables,并在其中聲明您的常量。
package tables
const (
UsersTable = "users"
PostsTable = "posts"
)
然后只需導(dǎo)入包即可使用
import (
"fmt"
"path/to/tables"
)
func main() {
fmt.Println(tables.UsersTable)
}
請(qǐng)注意,第一個(gè)解決方案,如果由另一個(gè)包導(dǎo)入,將導(dǎo)致fmt.Println(somepkg.Tables.UsersTable) (除非.使用導(dǎo)入),這可能不是您正在尋找的,也可能是。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以這樣聲明枚舉:
const (
Running = iota // value --> 0
Stopped // value --> 1
Rebooting // value --> 2
Terminated // value --> 3
)
地圖聲明也是如此。希望這可以幫助你。
- 2 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報(bào)