首頁 > 後端開發 > Golang > 泛型如何在 Go 中實現真正的泛型函數?

泛型如何在 Go 中實現真正的泛型函數?

DDD
發布: 2024-12-18 15:08:13
原創
403 人瀏覽過

How Do Generics Enable True Generic Functions in Go?

Go 中的泛型函數

Go 中的介面類型可以保存任何類型,而不需要任何實作的方法,給人的印像是它們充當泛型函數的形式。然而,事實並非如此。真正的泛型函數(在編譯時類型未知)在 1.18 版本之前的 Go 中不受支援。

在 Go 1.18 中,引入了泛型,可以建立泛型函數。通用函數可以使用 func 關鍵字定義,後面跟著方括號內的類型參數。類型參數指定泛型函數接受的類型。例如:

func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}
登入後複製

在此範例中,T 是可以表示任何類型的型別參數。函數 Print 接受 []T 類型的切片並列印該切片的元素。

要使用泛型函數,您可以傳遞所需類型的切片作為參數:

// Passing a list of strings
Print([]string{"Hello, ", "world\n"})

// Passing a list of integers
Print([]int{1, 2})
登入後複製

程式的輸出將是:

Hello, world
12
登入後複製

泛型函數提供了一種簡潔而安全的方法來編寫可以在不同類型上運行的程式碼,而無需犧牲類型安全。

以上是泛型如何在 Go 中實現真正的泛型函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板