Go에서 일반 함수는 유형 어설션, 유형 별칭 또는 빈 인터페이스를 사용하여 제네릭이 아닌 코드와 상호 작용할 수 있습니다. 유형 주장을 사용하면 값을 특정 유형으로 변환할 수 있습니다. 유형 별칭은 기존 유형의 일반 별칭을 생성하고 빈 인터페이스는 모든 유형의 변수를 나타낼 수 있습니다. 이러한 방법을 통해 제네릭 함수는 제네릭이 아닌 유형의 값을 허용하거나 반환할 수 있으므로 다양한 유형에 걸친 데이터 처리가 가능해집니다.
Go에서 일반 함수가 제네릭이 아닌 함수와 상호 작용하도록 만드는 방법
Go는 Go 1.18부터 제네릭을 도입하여 유형 및 알고리즘 코드를 재사용할 수 있는 문을 열었습니다. 하지만 새로운 일반 코드는 기존의 비일반 코드와 어떻게 상호 작용합니까?
유형 어설션 사용
유형 어설션은 인터페이스를 특정 유형의 값으로 변환하는 방법을 제공합니다. 이 작업은 스위치 문을 사용하여 수행할 수 있습니다.
func AnyToString(any interface{}) string { switch myString := any.(type) { case string: return myString default: return "Unknown" } }
이 함수는 임의의 값을 문자열로 변환하려고 시도하며 문자열이 아닌 경우 "알 수 없음"을 반환합니다.
유형 별칭 사용
유형 별칭을 사용하면 기존 유형에 대한 별칭을 만들 수 있습니다. 이를 통해 제네릭이 아닌 유형에 대한 제네릭 별칭을 만들 수 있습니다:
type MyString string func GenericFunc[T MyString](t T) {}
이제 제네릭 함수 GenericFunc
내에서 제네릭이 아닌 유형 MyString
을 사용할 수 있습니다. MyString
在泛型函数 GenericFunc
中:
GenericFunc(MyString("Hello"))
使用空的接口
空的接口可以表示任何类型的变量。这允许我们创建接受或返回任何类型值的泛型函数:
func GenericEmptyInterfaceFunc(empty interface{}) {}
我们可以使用任何类型的值调用此函数:
GenericEmptyInterfaceFunc(10) GenericEmptyInterfaceFunc("Hello")
实战案例:实现泛型排序
让我们通过对列表进行排序来演示泛型代码与非泛型代码的交互。
// Sort is a generic function that sorts a slice of any type that implements sort.Interface. func Sort[T sort.Interface](s []T) { sort.Sort(s) } // IntSlice implements sort.Interface for a slice of int. type IntSlice []int func (s IntSlice) Len() int { return len(s) } func (s IntSlice) Less(i, j int) bool { return s[i] < s[j] } func (s IntSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // StringSlice implements sort.Interface for a slice of string. type StringSlice []string func (s StringSlice) Len() int { return len(s) } func (s StringSlice) Less(i, j int) bool { return s[i] < s[j] } func (s StringSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } func main() { intSlice := IntSlice{10, 5, 7, 3, 11} Sort(intSlice) fmt.Println(intSlice) // Output: [3 5 7 10 11] stringSlice := StringSlice{"Hello", "World", "Go", "Golang"} Sort(stringSlice) fmt.Println(stringSlice) // Output: [Go Golang Hello World] }
此代码演示了如何使用泛型函数 Sort
rrreee
Sort
를 사용하여 사용자 정의 유형에 따라 다양한 값 목록을 정렬하는 방법을 보여줍니다. 🎜위 내용은 일반 함수는 Golang의 기존 비제네릭 함수와 어떻게 상호 작용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!