유니코드 문자 단위 처리
Go언어 소스코드는 UTF-8로 되어있다.
(UTF-8 인코딩은 유니코드를 이진수로 저장하는 규칙들 중 하나이다)
for i, r := range "가나다" {
fmt.Println(i, r)
}
fmt.Println(len("가나다"))
위 코드를 출력해보면
0 44032
3 45208
6 45796
9
가 나온다.
위 for문을 이옹하여 조사 적용을 매끄럽게하는 코드를 보면
//hangul.go
var (
start = rune(44032) //"가" 유니코드 포인트
end = rune(55204) //"힣" 유니코드 포인트
)
func HasConsonantSuffix(s string) bool {
numEnds := 28
result := false
for _,r := range s {
if start <= r && r < end {
index := int(r - start)
result = index % numEnds != 0
}
}
return result
}
이제 이 함수의 테스트를 만들어보면
원하는파일이름_test.go로 파일을 만들고
메인함수로 쓸만한 내용에 이름을 func Example원하는함수이름() 으로 만들어야한다.
그리고 테스트를 실행하려면 go test hangul_test.go hangul.go를 실행하면 된다.
//hangul_test.go
package hangul
import "fmt"
func ExampleHasConsonantSuffix() {
fmt.Println(HasConsonantSuffix("Go 언어"))
fmt.Println(HasConsonantSuffix("그럼"))
fmt.Println(HasConsonantSuffix("우리 밥 먹고 합시다."))
// Output:
// false
// true
// false
}
여기서 Output의 주석처리된 부분들이 실제로 테스트할 때 검사가 된다
Author And Source
이 문제에 관하여(유니코드 문자 단위 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dik654/문자열-및-자료구조저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)