>  기사  >  백엔드 개발  >  Golang 제네릭은 슬라이스 또는 배열 유형을 제외합니다.

Golang 제네릭은 슬라이스 또는 배열 유형을 제외합니다.

WBOY
WBOY앞으로
2024-02-13 11:00:19687검색

Golang 泛型排除切片或数组类型

PHP 편집자 Xiaoxin은 오늘 Golang 제네릭에 대한 기사를 가져왔습니다. 제네릭은 Golang에서 많이 기대되는 기능이지만 최신 제안에서는 슬라이스 또는 배열 유형에 대한 지원을 제외합니다. 이 문서에서는 이러한 결정의 이유를 설명하고 개발자에게 미치는 영향에 대해 논의합니다. 좀 더 자세히 살펴보겠습니다!

질문 내용

Go에 슬라이스나 배열에 적용하면 안되는 제네릭 함수가 있습니다. 하지만 어떻게 해야 할지 모르겠습니다. 이에 대한 예를 찾았지만 Typescript에서만 가능했기 때문에 더 이상 이해가 되지 않았습니다. 예를 들어, 나는 뭔가를 원합니다. 좋아요:

func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... } func sth[T everything_but_slices_or_arrays](arg T) { ...doSth... }

解决方法

您可以使用 comparable

해결 방법

비교 가능 제약 조건을 사용하여 중간으로 이동할 수 있습니다. 슬라이스 때문에 이 인터페이스를 구현하지 않습니다: 으아악

그러나

배열

(유사한 유형)은 다음과 같습니다.

으아악

컴파일하고 실행하여 출력을 생성합니다.

으아악 comparable 约束有意义,但如果函数不需要任何特定功能,则让它接受 any따라서 함수에서 슬라이스와 배열을 제외하는 것이 얼마나 중요한지에 따라 달라질 수 있으며 이는 일반 함수의 기능에 따라 달라집니다.

보다 일반적인 접근 방식은 일반 함수를 함수가 원하는 작업을 수행할 수 있도록 하는 데 필요한 범위로만 제한하는 것일 수 있습니다. 즉, 함수에 일반 유형과 비교할 수 있는 인수가 필요한 경우

.

특정 유형(들)의 값을 가진 함수를 임의로 사용하고 싶지 않다면, 함수가 하는 일에 문제가 없더라도 다른 방법을 통해 수행할 수 있습니다. (코드 검토, 풀 요청 등)이 더 잘 규제되고 규제됩니다. 🎜 🎜일반 기능이 어떤 역할을 할지 정확히 알지 못하면 확신하기 어렵습니다. :)🎜

위 내용은 Golang 제네릭은 슬라이스 또는 배열 유형을 제외합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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