sort.Strings()를 사용하여 Golang에서 대소문자를 구분하지 않는 정렬
Python에서 대소문자를 구분하지 않는 정렬은 종종 다음의 키 매개변수를 사용하여 수행됩니다. 사용자 정의 비교 함수를 허용하는 sorted() 함수. 그러나 Go의 sort.Strings()에는 직접적으로 동등한 것이 없습니다.
Go에서 대소문자를 구분하지 않는 정렬을 수행하기 위해 Go의 강력한 슬라이싱 기능을 활용할 수 있습니다. 한 가지 접근 방식은 문자열의 소문자 버전을 비교하는 사용자 정의 비교 함수를 만드는 것입니다.
<code class="go">sort.Strings(data, func(i, j int) bool { return strings.ToLower(data[i]) < strings.ToLower(data[j]) })</code>
이 방법은 작은 데이터 세트에 적합하지만 큰 입력의 경우 과도한 문자열 할당이 발생할 수 있습니다.
보다 효율적인 정렬을 위해 대/소문자를 무시하고 문자열을 룬별로 비교할 수 있습니다.
<code class="go">func lessLower(sa, sb string) bool { for { rb, nb := utf8.DecodeRuneInString(sb) if nb == 0 { return false } ra, na := utf8.DecodeRuneInString(sa) if na == 0 { return true } rb = unicode.ToLower(rb) ra = unicode.ToLower(ra) if ra != rb { return ra < rb } sa = sa[na:] sb = sb[nb:] } } sort.Strings(data, func(i, j int) bool { return lessLower(data[i], data[j]) })</code>
이 방법은 문자열의 룬을 직접 비교하여 불필요한 할당을 방지합니다.
유연성을 높이고 언어별 정렬을 수행하려면 로케일 및 언어별 정렬 규칙을 제공하는 collate 패키지 사용을 고려해 보세요.
위 내용은 sort.Strings()를 사용하여 Go에서 대소문자를 구분하지 않는 정렬을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!