[英]how to make a function to return a generic of struct?
我在 go 中學習泛型。 我有 struct User
和Member
,我想制作一個 function 來返回User
或Member
。 我怎樣才能做到這一點?
編輯:我不想使用interface{}
或any
您可以使用interface{}
結果類型,因此您可以返回任何值(不僅是User
和Member
)。 您可以使用 2 個返回值(Go 允許這樣做)。 或使用 2 個不同的功能。
如果您想使用 generics 來執行此操作,它可能如下所示:
func getSomething[T User | Member]() T {
var result T
return result
}
getSomething()
有一個允許User
或Member
的類型參數。
你可以這樣稱呼它:
fmt.Printf("%T\n", getSomething[User]())
fmt.Printf("%T\n", getSomething[Member]())
哪些輸出(在Go Playground上嘗試):
main.User
main.Member
interface{}
在 Go 中一直是一個令人眼花繚亂的問題 - 所以 Go 1.18
(支持 Generics)現在可以對任何類型使用新關鍵字any
:
func myFunc[T any](in T) (out T) {
// do stuff
return
}
或者您可以使用目標類型的子集作為@icza 概述User | Member
User | Member
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.