go1.18 Dockerfile
FROM golang:1.18beta1-bullseyeWORKDIR /go/src/appCMD echo "欢送smallForest"CMD /bin/bash
go1.18泛型代码
package mainimport "fmt"// SumInts adds together the values of m.func SumInts(m map[string]int64) int64 { var s int64 for _, v := range m { s += v } return s}// SumFloats adds together the values of m.func SumFloats(m map[string]float64) float64 { var s float64 for _, v := range m { s += v } return s}// SumIntsOrFloats sums the values of map m. It supports both int64 and float64// as types for map values.func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {var s Vfor _, v := range m {s += v}return s}type Number interface { int64 | float64}// SumNumbers sums the values of map m. Its supports both integers// and floats as map values.func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s}func main() { // Initialize a map for the integer values ints := map[string]int64{ "first": 34, "second": 12, } // Initialize a map for the float values floats := map[string]float64{ "first": 35.98, "second": 26.99, } fmt.Printf("Non-Generic Sums: %v and %v\n", SumInts(ints), SumFloats(floats)) fmt.Printf("Generic Sums: %v and %v\n", SumIntsOrFloats[string, int64](ints), SumIntsOrFloats[string, float64](floats)) fmt.Printf("Generic Sums, type parameters inferred: %v and %v\n", SumIntsOrFloats(ints), SumIntsOrFloats(floats)) fmt.Printf("Generic Sums with Constraint: %v and %v\n", SumNumbers(ints), SumNumbers(floats))}
https://go.dev/doc/tutorial/g...