簡體   English   中英

如何使 function 返回結構的泛型?

[英]how to make a function to return a generic of struct?

我在 go 中學習泛型。 我有 struct UserMember ,我想制作一個 function 來返回UserMember 我怎樣才能做到這一點?

編輯:我不想使用interface{}any

您可以使用interface{}結果類型,因此您可以返回任何值(不僅是UserMember )。 您可以使用 2 個返回值(Go 允許這樣做)。 或使用 2 個不同的功能。

如果您想使用 generics 來執行此操作,它可能如下所示:

func getSomething[T User | Member]() T {
    var result T
    return result
}

getSomething()有一個允許UserMember的類型參數。

你可以這樣稱呼它:

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

https://go.dev/play/p/RGm6cl4ncqA?v=gotip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM