1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
看起來像這個(gè)編譯器錯(cuò)誤。它在 Go 1.19 中得到修復(fù)并向后移植到 Go 1.18.2。
如果您使用的是舊版本,我建議maps您像您已經(jīng)嘗試過的那樣,簡單地放棄軟件包并手動(dòng)執(zhí)行操作。這只是一個(gè)簡單的循環(huán):
func (s Set[T]) AddSet(another Set[T]) {
for k := range another {
s[k] = struct{}{}
}
}
@icza 將命名映射類型顯式轉(zhuǎn)換為其基礎(chǔ)類型的注釋也有效:
maps.Copy(map[T]struct{}(s), another)
如果您使用需要多個(gè)映射類型參數(shù)(具有相同約束)的函數(shù),如maps.Equalor maps.EqualFunc,您必須轉(zhuǎn)換兩個(gè)參數(shù):
func (s Set[T]) Compare(another Set[T]) bool {
// signature is Equal[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool
return maps.Equal(map[T]struct{}(s), map[T]struct{}(another))
}
似乎用 len >= 2 的數(shù)組實(shí)例化的參數(shù)化映射類型也重現(xiàn)了崩潰。
- 1 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報(bào)