비슷한 방식으로 슬라이스와 채널의 값을 검색하는 일반 함수를 golang에 작성하려고 합니다. 예는 다음과 같습니다.
으아아아하지만 다음과 같은 컴파일 오류가 발생합니다: cannot range over input(类型 t 的变量受 chan int|[]int 约束)(t 没有核心类型)
.
저는 다음과 같은 일반적인 인터페이스를 만들려고 했습니다:
으아아아오류가 cannot range over input(t 类型的变量受 rangable 约束)(t 没有核心类型)
로 변경되었지만 기본적으로는 동일합니다...
제네릭이나 채널을 사용하여 이 작업을 해결할 수 있는 방법이 있습니까? 슬라이스를 동일한 코어 유형으로 "변환"할 수 없습니까?
제안이나 아이디어를 보내주셔서 감사합니다!
이러시면 안 됩니다.
range
표현식은 핵심 유형 으로 시작해야 합니다. 서로 다른 유형의 용어를 사용하는 공용체에는 공통 기본 유형이 없기 때문에 핵심 유형이 없습니다.
또한 왜 range
에 핵심 유형이 필요한지 직관적으로 알 수 있습니다. 슬라이스와 채널 범위의 의미가 다릅니다.
채널 범위 지정은 차단 작업일 수 있지만 슬라이스 범위 지정은 차단 작업이 아닙니다
반복 변수가 다릅니다
슬라이스의 경우 i
是 int
类型的索引,item
는 슬라이스 요소의 유형입니다.
채널의 경우 item
는 chan 요소의 유형이며 이것이 유일하게 가능한 범위 변수입니다.
가장 좋은 유형 스위치는 다음과 같습니다.
으아아아하지만 이 함수의 동작(차단 대 비차단)은 유형에 따라 다르며 여기에서 제네릭을 사용하여 어떤 이점을 얻을 수 있는지 명확하지 않습니다.
위 내용은 채널과 슬라이스를 허용하는 일반 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!