1. 程式人生 > 實用技巧 >go基礎(二) 泛型

go基礎(二) 泛型

go 語言支援泛型納入了 go2 的規劃

本文是 go 泛型的實踐過程詳解

這是一篇不錯的 泛型介紹 Go 語言:全面分析為什麼我們需要泛型 - 講解了泛型的優點、缺點、和 go 在泛型上的實現方案。本文不再具體介紹

簡單說 泛型是與型別無關的演算法。

實踐過程

1. 編譯 go 安裝包 dev.go2go 分支
2. 安裝新編譯的 go 程式
3. 使用新的 go 編譯泛型程式碼(檔案字尾名.go2)
4. 例子一 print.go2

package main
import (
    "fmt"
)
func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}
func main() {
    Print([]string{"Hello, ", "playground\n"})
}

5. 執行 go tool go2go run filename.go2

6. 例子二 indexof.go2

package main
import (
     "fmt"
)
func IndexOf[T comparable](arr []T, value T) int {
    for i, v := range arr {
        if v == value {
            return i
        }
    }

    return -1
}
func main() {
     q := []uint{1,2,3,4,5}
     fmt.Println(IndexOf(q, 5)) // 5
     str := []string{"xi","an","shi","gao","xin","qu"}
     fmt.Println(IndexOf(str,"gao")) // 3
     fmt.Println(IndexOf(str,"xii")) // -1
}