我想了解是否可以初始化一個包含通用欄位的匿名結構陣列。下面的代碼無法編譯,而且我找不到與以下相關的任何示例:
testCases := type [K comparable, T Numeric] []struct {
name string
args map[K]T
expected int
}{
// items ...
{"integer", map[string]int{ "a":1 },
}
沒有匿名結構很容易,但不是目標:
type args[K comparable, T Numeric] struct {
m map[K]T
}
testCases := []struct {
name string
args args[string, int]
expected int
}{}
謝謝!
uj5u.com熱心網友回復:
引入了型別引數,因此當您實體化型別時,您可以為型別引數提供具體型別。鑒于此,您想做的事情毫無意義。您想創建一個通用匿名型別并立即實體化它。您不能在其他地方使用此匿名結構(因為它是匿名的),因此請忽略型別引數并使用您實體化型別引數的具體型別(如果它是命名型別)。
并回答您最初的問題:不,您不能這樣做。語法不允許這樣做。有一個提案支持這一點,但被拒絕了:proposal: spec: generics: Anonymous generic aggregate types #45591。正如您所建議的那樣,解決方法是使用命名結構型別而不是匿名結構型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447726.html
上一篇:處理奇偶值
