Go 中的泛型函數:綜合指南
在探索 Go 時,您可能會遇到空介面的概念。它是一個強大的工具,可以容納任何類型,不需要額外的方法。
考慮這個例子:
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
當你傳遞不同的類型來描述時,它會印出類型和值:
"Type: int | Value: 5" // for i := 5 "Type: string | Value: test" // for i := "test"
那麼,這是Go 實作泛型函數的方式嗎?不完全是。從 Go 1.18 開始,您現在可以編寫真正的泛型函數。這是一個範例:
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
輸出:
Hello, world 12
這個泛型函數 Print 可以處理任何類型的切片,為泛型程式提供更通用和型別安全的方法。
以上是Go 的空介面或 Go 1.18 泛型是泛型函數的真正實作嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!