package main
import (
"fmt"
)
// 定义一个类型约束,包含所有内置的数值类型和字符串类型
type NumericOrString interface {
int | int8 | int16 | int32 | int64 |
uint | uint8 | uint16 | uint32 | uint64 | uintptr |
float32 | float64 | complex64 | complex128 | string
}
// 使用泛型的add函数,要求类型T满足NumericOrString约束
func add[T NumericOrString](a, b T) T {
return a + b
}
func main() {
result := add(5, 3)
fmt.Println(result) // 输出: 8
result1 := add(float64(5.5), float64(3.2))
fmt.Println(result1) // 输出: 8.7
// 注意:字符串相加会按拼接处理
result2 := add("Hello ", "World")
fmt.Println(result2) // 输出: Hello World
}