Go의 제네릭 적용 시나리오: 컬렉션 작업: 필터링과 같이 모든 유형에 적합한 컬렉션 작업을 만듭니다. 데이터 구조: 큐, 스택, 맵과 같은 범용 데이터 구조를 작성하여 다양한 유형의 데이터를 저장하고 조작합니다. 알고리즘: 다양한 유형의 데이터를 처리할 수 있는 정렬, 검색, 축소 등의 범용 알고리즘을 작성합니다.
제네릭은 Go 1.18에 도입된 주요 기능으로, 유형 시스템에서 유형 변수를 사용할 수 있게 해줍니다. 이는 특히 공통 데이터 구조나 알고리즘을 구현할 때 코드 재사용 및 중복성 감소를 위한 강력한 기능을 제공합니다.
제네릭을 사용하면 모든 유형 T에 적용되는 집합 연산을 쉽게 만들 수 있습니다. 예:
func Filter[T any](slice []T, pred func(T) bool) []T { var filtered []T for _, v := range slice { if pred(v) { filtered = append(filtered, v) } } return filtered }
Generics는 큐, 스택 또는 맵과 같은 일반적인 데이터 구조를 작성하는 데 도움이 될 수 있습니다. 이러한 데이터 구조는 다양한 유형의 데이터를 저장하고 조작할 수 있어 더 큰 유연성을 제공합니다.
type Queue[T any] struct { items []T } func (q *Queue[T]) Enqueue(item T) { q.items = append(q.items, item) } func (q *Queue[T]) Dequeue() T { item := q.items[0] q.items = q.items[1:] return item }
Generics를 사용하면 정렬, 검색 또는 축소 작업과 같은 범용 알고리즘을 작성할 수도 있습니다. 이러한 알고리즘은 다양한 유형의 데이터를 처리하여 코드 재사용성과 유지 관리성을 보장합니다.
func Sort[T any](slice []T) []T { sort.Slice(slice, func(i, j int) bool { return slice[i] < slice[j] }) return slice }
다양한 유형의 데이터를 포함하는 Customer
구조를 고려하세요. Customer
结构:
type Customer struct { ID int Name string Age int Score float64 }
我们可以使用泛型编写一个通用的 SortCustomers
func SortCustomers[T comparable](customers []Customer, field T) []Customer { sort.Slice(customers, func(i, j int) bool { return customers[i][field] < customers[j][field] }) return customers }
SortCustomers
함수를 작성할 수 있습니다. 모든 필드를 기준으로 고객 정렬: sortedByID := SortCustomers(customers, customers[0].ID) sortedByName := SortCustomers(customers, customers[0].Name)
위 내용은 golang의 제네릭의 특정 애플리케이션 시나리오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!