我正在嘗試編寫一個(gè)可以被不同結(jié)構(gòu)使用的函數(shù)。函數(shù)的返回值必須是相應(yīng)結(jié)構(gòu)的一部分。因此我需要一個(gè)接受結(jié)構(gòu)作為參數(shù)并返回一個(gè)切片的函數(shù)。我的代碼看起來像這樣,但我不知道如何將它包裝為一個(gè)函數(shù)?type name struct{ FirstName string `xml:"firstName"` LastName string `xml:"lastName"` }fileList := TreeTraversal(".") var a name var b []name for i := 0; i < len(fileList); i++{ fileByte, _ := ioutil.ReadFile(fileList[i]) xml.Unmarshal(fileByte, &a) b = append(b, a)}據(jù)我所知,我可以將結(jié)構(gòu)作為接口傳遞給函數(shù),但我不知道返回類型?
1 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果你想要一個(gè)接受任何結(jié)構(gòu)類型并返回它的一部分的函數(shù),比如:
func?MakeSlice(s?ANY_STRUCT_TYPE)?[]ANY_STRUCT_TYPE
您正在尋找 Go 目前不支持的泛型。
Go 團(tuán)隊(duì)正在努力為語言添加泛型——這是一項(xiàng)正在進(jìn)行的工作,每個(gè)人都可以自由參與討論。一旦泛型存在,它們將提供您在這里尋求的解決方案。
同時(shí),您可以使用代碼生成或?yàn)槟膯栴}想出稍微不同的設(shè)計(jì)。一些代碼重復(fù)也是可以的,Go 并不像其他一些語言那樣不喜歡它。
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)
0/150
提交
取消