我正在學習通用語言。我有 struct Userand Member,我想創建一個函式來回傳Useror Member。我怎樣才能做到這一點?
編輯:我不想使用interface{}或any
uj5u.com熱心網友回復:
您可以使用interface{}結果型別,因此您可以回傳任何值(也不僅僅是Userand Member)。您可以使用 2 個回傳值(Go 允許這樣做)。或使用 2 個不同的功能。
如果你想使用泛型來做,它可能是這樣的:
func getSomething[T User | Member]() T {
var result T
return result
}
getSomething()有一個允許Useror的型別引數Member。
你可以這樣稱呼它:
fmt.Printf("%T\n", getSomething[User]())
fmt.Printf("%T\n", getSomething[Member]())
哪些輸出(在Go Playground上嘗試):
main.User
main.Member
uj5u.com熱心網友回復:
interface{}在 Go 中一直是令人眼花繚亂的 - 所以 Go 1.18(支持泛型)現在可以將 new 關鍵字any用于任何型別:
func myFunc[T any](in T) (out T) {
// do stuff
return
}
或者您可以使用目標型別的子集作為@icza 大綱User | Member
https://go.dev/play/p/RGm6cl4ncqA?v=gotip
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/426688.html
上一篇:使用反射和泛型改進代碼
下一篇:不同的回傳值取決于通用常量的值
