Go의 Generics는 코드 재사용성을 제공하여 다양한 유형의 데이터에 사용할 수 있는 코드를 생성할 수 있습니다. Java 및 C++의 제네릭과 비교할 때 Go의 제네릭은 성능 오버헤드가 낮지만 유형 추론은 조건부일 뿐이며 제약이 제한됩니다.
제네릭은 다양한 유형의 데이터와 작동하는 코드를 생성할 수 있는 프로그래밍 언어 기능입니다. Go 1.18에서는 제네릭을 도입하여 생태계에 큰 변화를 가져왔습니다. 이 기사에서는 Go의 제네릭과 다른 언어 기능 간의 유사점과 차이점을 비교하고 실제 예를 제공합니다.
Features | Go | Java | C++ |
---|---|---|---|
Syntax |
func name[T any]( 티 T) func name[T any](t T)
|
class Box<t></t> |
template<typename t></typename> |
nullability | yes | no | |
유형 추론 | 조건부 | 예 | |
제약 조건 | 제한됨 | 무제한 | |
성능 오버헤드 | 낮음 | 더 낮음 |
실제 예: 일반 함수 정렬 다음 예에서는 일반 함수를 사용하여 다양한 유형의 배열을 정렬하는 방법을 보여줍니다.
type Ordered interface { Less(a, b Ordered) bool } func Sort[T Ordered](arr []T) { for i := 0; i < len(arr)-1; i++ { for j := i + 1; j < len(arr); j++ { if arr[i].Less(arr[j]) { arr[i], arr[j] = arr[j], arr[i] } } } } type Int struct{ i int } func (a Int) Less(b Int) bool { return a.i < b.i } type String struct{ s string } func (a String) Less(b String) bool { return a.s < b.s } func main() { arr1 := []Int{{1}, {3}, {2}} arr2 := []String{"a", "c", "b"} Sort(arr1) Sort(arr2) fmt.Println(arr1) // [{1} {2} {3}] fmt.Println(arr2) // [{a} {b} {c}] }
위 내용은 golang의 제네릭과 기타 언어 기능 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!