모든 배열 유형을 처리 할 수 있도록 Map
함수를 작성하려고합니다.golang의 generic 매개 변수에 func을 쓰는 방법
// Interface to specify generic type of array.
type Iterable interface {
}
func main() {
list_1 := []int{1, 2, 3, 4}
list_2 := []uint8{'a', 'b', 'c', 'd'}
Map(list_1)
Map(list_2)
}
// This function prints the every element for
// all []types of array.
func Map(list Iterable) {
for _, value := range list {
fmt.Print(value)
}
}
그러나 컴파일 타임 오류가 발생합니다. range
유형은 Iterable
여기 수신 동작을 허용하는 배열 슬라이스 문자열지도 또는 채널로 배열, 포인터를 필요로하기 때문에
19: cannot range over list (type Iterable)
오류가 맞습니다. 내가 직면하고있는 문제는 인수 형 Iterable
을 배열 형으로 변환하는 것입니다. 제발, 제 기능을 제네릭 배열을 처리하는 데 사용할 수있는 방법을 제안하십시오.
인터페이스 인수에서 유형 및 값을 알 수 있습니까? 나는 아직도 그것을 공유 된 예에서 이해하려고 노력하고있다. –
@ subh.singh는 동적이지 않기 때문에,'interface {}'대신에 알려진 인터페이스의 배열로 작업하는 것이 더 낫습니다. – VonC
@ subh.singh 적어도 반사되지 않고 http://play.golang.org/p/jxMFq5UYs1의 비트가 https://www.tbray.org/ongoing/When/201x/2013의 의견에 언급되어 있습니다./07/15/골양 일기 -2. – VonC