>  기사  >  백엔드 개발  >  채널과 슬라이스를 허용하는 일반 함수

채널과 슬라이스를 허용하는 일반 함수

PHPz
PHPz앞으로
2024-02-06 08:36:10786검색

채널과 슬라이스를 허용하는 일반 함수

질문 내용

비슷한 방식으로 슬라이스와 채널의 값을 검색하는 일반 함수를 golang에 작성하려고 합니다. 예는 다음과 같습니다.

으아아아

하지만 다음과 같은 컴파일 오류가 발생합니다: cannot range over input(类型 t 的变量受 chan int|[]int 约束)(t 没有核心类型).

저는 다음과 같은 일반적인 인터페이스를 만들려고 했습니다:

으아아아

오류가 cannot range over input(t 类型的变量受 rangable 约束)(t 没有核心类型)로 변경되었지만 기본적으로는 동일합니다...

제네릭이나 채널을 사용하여 이 작업을 해결할 수 있는 방법이 있습니까? 슬라이스를 동일한 코어 유형으로 "변환"할 수 없습니까?

제안이나 아이디어를 보내주셔서 감사합니다!


정답


이러시면 안 됩니다.

range 표현식은 핵심 유형 으로 시작해야 합니다. 서로 다른 유형의 용어를 사용하는 공용체에는 공통 기본 유형이 없기 때문에 핵심 유형이 없습니다.

또한 왜 range에 핵심 유형이 필요한지 직관적으로 알 수 있습니다. 슬라이스와 채널 범위의 의미가 다릅니다.

  1. 채널 범위 지정은 차단 작업일 수 있지만 슬라이스 범위 지정은 차단 작업이 아닙니다

  2. 반복 변수가 다릅니다

으아아아

슬라이스의 경우 iint 类型的索引,item는 슬라이스 요소의 유형입니다.

으아아아

채널의 경우 item는 chan 요소의 유형이며 이것이 유일하게 가능한 범위 변수입니다.

가장 좋은 유형 스위치는 다음과 같습니다.

으아아아

하지만 이 함수의 동작(차단 대 비차단)은 유형에 따라 다르며 여기에서 제네릭을 사용하여 어떤 이점을 얻을 수 있는지 명확하지 않습니다.

위 내용은 채널과 슬라이스를 허용하는 일반 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제