package goSyntax // 基本接口,方法集 type ReadWriter interface { Read(p []byte) (int, error) Write(p []byte) (int, error) } // 一般接口,仅包含类型集(类型约束) type Float interface { ~float32 | ~float64 } // 一般接口,同时包含方法集合类型集的接口 type FloatReadWriter interface { ~float32 | ~float64 Read(p []byte) (int, error) Write(p []byte) (int, error) } // 实现接口 // 基本接口,方法集 type rw struct{} func (rw) Read(p []byte) (int, error) { return 0, nil } func (rw) Write(p []byte) (int, error) { return 0, nil } // 实现接口 // 一般接口,类型集 type myFloat float32 func (myFloat) Read(p []byte) (int, error) { return 0, nil } func (myFloat) Write(p []byte) (int, error) { return 0, nil } type yourFloat float64 // 调用测试 func funcMS(p ReadWriter) { } // interface includes constraint elements '~float32', '~float64', can only be used in type parameters // func funcGI(p Float) {} func funcGI[T Float]() {} func funcGI2[T FloatReadWriter]() {} // 测试函数 func TypeSet() { // 传统的接口(基础接口) funcMS(rw{}) // myFloat, yourFloat, float32, float64,4中类型的基础类型满足Float接口 funcGI[myFloat]() funcGI[yourFloat]() funcGI[float32]() funcGI[float64]() // myFloat 满足以float32为基础类型,同时实现了Read和Write funcGI2[myFloat]() // 而 yourFloat, float32, float64,没有实现Read和Write //funcGI2[yourFloat]() //funcGI2[float32]() //funcGI2[float64]() } type Empty interface { int string } type myMap[K comparable, V any] map[K]V //type yourMap[K any, V any] map[K]V