본문 바로가기
golang

golang에서의 문자열 처리

by PudgeKim 2020. 5. 13.

파이썬에서는 문자열처리가 상당히 편한데 golang에서의 문자열처리는 파이썬에 비해 직관적이지 않고 조금 당황스러울 수 있어서 한번 정리해보려고한다. 바로 시작해보자

 

hello world를 변수 s에 넣고 하나씩 출력해봤다. (참고로 golang은 type이 있는 언어지만 :=를 통해서 알아서 타입지정을 해준다. (이 부분이 궁금하면 구글링을 해보자) 여튼 그래서 s는 지금 문자열이 들어가있는 상태이다. 

그래서 출력 결과는?

딱봐도 아스키코드가 나온듯하다. 그럼 어떻게 알파벳을 출력할까? 답은 간단하다. string함수를 쓰면 된다.

 

그럼 오늘의 키 포인트인 한글은 어떻게 처리할까?

뭔가 이상하게 나온다. 왜 그럴까? 

Go는 utf-8을 기반으로 한다. (참고로 go만든 사람중에 한명이 utf-8을 만들었다.)

utf-8은 문자 하나를 1~3byte로 나타내는데 아스키코드는 1바이트라 정상 출력되지만 한글의 경우 3바이트를 필요로 해서 일반적인 방법으로 출력하면 조금 이상하게 나온다.

좀 더 확실하게 하기위해 string함수를 빼고 다시 출력해보자.

저기 주황색 괄호로 묶인 부분들이 한글을 나타내는 부분이다. 한글은 3바이트를 쓰므로 저 3개를 조합해서 나온다.

그럼 한글을 어떻게 출력할까?

golang에는 rune이라는 type이 있는데 이걸 활용하면 된다.

주황색 부분을 보라. 3개씩 따로 나오던 한글부분이 rune을 이용하니 하나로 바뀌었다. 

참고로 len(s)와 len(t)는 길이도 역시 다르게 나온다. len(s)는 12가, len(t)는 8이 나온다.

 

-끝- 

'golang' 카테고리의 다른 글

golang과 함께 알아보는 쿠키  (0) 2020.12.09
golang 정렬하기  (0) 2020.10.22
golang에서 HandlerFunc란?  (0) 2020.10.19
golang에서 slice VS linkedlist  (0) 2020.05.22
golang에서의 slicing  (0) 2020.05.18