-
Go언어: Generics 이용하기 (v1.17+)컴퓨터/Go language 2021. 3. 24. 22:22728x90반응형
Go 1.17 버전 이상
Generic이 드디어 생겼다.
(욕먹던 부분)type X interface로 지정 후 또는 (any로 모든 타입 받을 수 있음)
자바처럼 T로 사용하면 된다.
1. Min and Max
package main import ( "fmt" ) type comparable interface { type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr, float32, float64 } func max[T comparable](a []T) T { m := a[0] for _, v := range a { if m < v { m = v } } return m } func min[T comparable](a []T) T { m := a[0] for _, v := range a { if m > v { m = v } } return m } func main() { vi := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} result := max(vi) fmt.Println(result) vi = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} result = min(vi) fmt.Println(result) }
2. Shuffle
package main import ( "fmt" "time" "math/rand" ) func shuffle[T any](a []T) { n := len(a) for i := n - 1; i >= 0; i-- { j := rand.Intn(i + 1) a[i], a[j] = a[j], a[i] } } func main() { rand.Seed(time.Now().UnixNano()) vi := []int{1,2,3,4,5,6,7,8,9,10} shuffle(vi) fmt.Println(vi) }
728x90'컴퓨터 > Go language' 카테고리의 다른 글
Golang: Struct memory 최적화 (구조체 크기) (0) 2022.01.29 Golang: 카카오 챗봇 API 응답 JSON 빌더 헬퍼 모듈 (0) 2021.02.21 Golang: soup를 이용한 네이버 날씨 정보 가져오기 (0) 2021.02.14