3 回答

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個贊
您不能在“編譯”時執(zhí)行此操作。事實(shí)上,package A
使用的復(fù)合文字,也將在運(yùn)行時構(gòu)造和使用。沒有復(fù)合文字常量。
更進(jìn)一步,無論您在 package 中編寫什么代碼B
,如果它導(dǎo)入 package A
, package 的代碼B
只會在 packageA
初始化后運(yùn)行,包括您發(fā)布的地圖。
如果你想A.MyMap
在任何其他包看到它之前有一個不同的值,你應(yīng)該修改包的源A
。這可能是生成的附加文件,它可以使用包init()
函數(shù),為 分配新值MyMap
,或向其添加新值。
如果可以,您還可以修改 packageA
以便將 的初始化MyMap
移動到另一個可以生成的源文件。

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊
您在鏈接時使用命令傳遞一個字符串
go?build?-ldflags?'-X?somemap={"k":"v"}'
然后在運(yùn)行時將其解析為映射。您可以輕松使用 JSON 格式。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個贊
它實(shí)際上是運(yùn)行時的擴(kuò)展,但它應(yīng)該適合您的示例。
使用初始化函數(shù)。
package B
import "A"
func init() {
? ? A.MyMap["key3"] = "value"
}
- 3 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報