Go 泛型

发布时间: 更新时间: 总字数:259 阅读时间:1m 作者: IP上海 分享 网址

Go中泛型的抽象数据类型

介绍

Go1.18 实现的泛型,引入如下概念

  • 类型形参(Type parameter)
  • 类型实参(Type argument)
  • 类型形参列表(Type parameter list)
  • 类型约束(Type constraint)
  • 实例化(Instantiations)
  • 泛型类型(Generic type)
  • 泛型接收器(Generic receiver)
  • 泛型函数(Generic function)

类型参数是泛型的抽象数据类型,使用方括号定义

func Print[T any](s []T) {
	for _, v := range s {
		fmt.Println(v)
	}
}

go1.17 的版本,可以通过 -G 的开关打开泛型

go1.17 run -gcflags=-G=3 xxx

示例

示例一

package main

import "fmt"

type any = interface{}

func f(a any) {
	switch a.(type) {
	case int:
		fmt.Println("int")
	case float64:
		fmt.Println("float64")
	case string:
		fmt.Println("string")
	}
}

func main() {
	f(666)
	f(3.1415)
	f("hello world!")
}

示例二

package main

import "fmt"

func Print[T any](s []T) {
	for _, v := range s {
		fmt.Print(v)
	}
	fmt.Println()
}

func main() {
	Print([]string{"hello, ", "world!"})
	Print([]int64{1, 2, 3})
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数