PHP 편집기 Apple은 Go 언어에서 제네릭을 사용할 때 V 유형의 두 값을 직접 비교할 수 없다는 사실을 발견했습니다. 즉, 문자열이나 정수와 마찬가지로 단순히 == 또는 !=를 사용하여 비교할 수는 없습니다. 이는 제네릭이 다르게 구현되어 값을 직접 비교할 수 없기 때문입니다. 이 경우 필요한 기능을 달성하기 위해 사용자 정의 비교 함수 또는 방법을 사용하여 비교 작업을 수행해야 합니다. 이는 특히 제네릭과 관련된 코드를 작성할 때 주의해야 할 세부 사항입니다.
go 버전: go1.21rc2
저는 값을 취하고 값이 맵에 있으면 true/false를 반환하는 제네릭을 사용하여 go에서 함수를 작성하고 있습니다.
아래 버전 1에서는 두 값이 모두 유형일 때 왜 작동하는지 이해가 되지 않습니다. any
时无法比较?但是在版本 2 中转换为 any
... 뭔가 분명한 것이 빠진 것 같지만 이 부분이 잘 이해되지 않습니다.
버전 1(작동하지 않음):
으아악버전 2(작동 중):
func invalues[m ~map[k]v, k comparable, v any](m m, v v) bool { for _, x := range maps.values(m) { if x == v { return true } } return false }
V
需要是 comparable
才能允许 ==
.
항상 허용되는 any
然后比较有效,因为它在 any
之间使用非通用 ==
로 변환합니다.
위 내용은 V 유형의 두 값을 Go 제네릭과 비교하려고 하면 작동하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!