[golang]Go언어 문자열

2021년 07월 02일 by Xion

    [golang]Go언어 문자열 목차

 

 

| Golang 문자열

- Go는 기본적으로 utf8 문자열입니다.

- 문자열은 배열이라고 생각하시면 편합니다. 즉 문자열은 배열로 취급합니다.

- 문자 char type은 존재하지 않는다.  ( rune (int32) 로 문자 코드 값으로 표현합니다.)

- 문자열 : "" (큰따옴표) 문자 : '' (작은따옴표)로 사용합니다.

( 하지만 경로등을 나타내는 문자열에서는 escape를 사용해야하는데 이런 귀찮은 행동을 방지하기 위하여 ``(백틱)을 사용하면 됩니다. )

 

- escape : \\ , \' , \" , \b(백스페이스), \f(쪽 바꿈), \n (줄 바꿈) , \r(복귀), \t( 탭 ) ...

ex)

var str1 string = "c:\\go_study\\src\\" // -> c:\go_study\src\

//백틱 태그 사용
str2 := `c:\go_study\src\`

 

 

| len 

문법

var str3 string = "hello !z"
var str4 string = "안녕하세요."

len(str3) // 8
len(str4) // 한글 : 3 byte, 나머지 1 byte = 16

- Go에서 len은 byte 수를 구해준다.

(한글 :3 byte & 나머지는 1 byte (공백 포함 ) )

 

| 실제 문자열 길이를 구하는 방법 2가지


1. 함수 ( unicode/utf8 ) 패키지의 
utf8.RuneCountInString 사용

fmt.Print("ex : ", utf8.RuneCountInString(구할 문자열))

 

2. len이용

//len으로 길이를 구하는 방법
fmt.Println("ex : ", len([]rune(문자열))) 

 

|  문자열  한 글자 씩 출력하기

println 사용

func main(){
	var str1 string ="Golang"

	//해당하는 아스키 코드가 나옵니다. ex) 71 111 108 ...
    fmt.Println("ex1 : ", str1[0], str1[1], str[2] ... )
}

 

printf 사용

// %c를 이용한 문자열 한 글자 씩 표현 
fmt.Printf("ex:%c %c %c %c %c ", str1[0],str1[1],str1[2],str1[3] ... );

//결과 : G o l a n g 

주의 !

 

printf를 사용하면서 포메터 형식으로 배열을 출력하려 하면 한글이 깨집니다.

( 단, 영어로는 정상 출력이 되지만, 한글로 표시된 문자열을 출력하는 경우 깨지게됩니다.)

 

 

한글 깨짐 해결 ( 문자열 길이를 이용 ) 

constStr := []rune(str3)
fmt.Printf("ex : , %c %c %c %c %c \n ", constStr[0], constStr[1], constStr[2] ... )

 

 

| 반복문으로 string형을 순회하는 방법

var str2 string = "Golang"

for i, char := range str2 {
	fmt.Printf("ex : %c, (%d) \t ",char, i)
}

// G(0) o(1) l(2) a(3) n(4) g(5) 

 

 

참고링크 : http://pyrasis.com/book/GoForTheReallyImpatient/Unit45/02

 

가장 빨리 만나는 Go 언어 Unit 45.2 유니코드와 UTF-8 함수 사용하기

 

pyrasis.com

 

 

 


 

! ! ! 이번 글에서 제일 중요한 점 ! ! !

 

1.문자열은 배열로 취급한다.

2.한글을 깨지지 않게 출력하는 방법 "[]rune()" 형태  생성자로 string 변수를 넣어준다.

3.문자열은 배열로 취급되기 때문에 for (반복문)에서 취급할 수 있다.

4.따라서 index로 접근이 가능하고 index로 접근하면 아스키코드(정수형)로 출력된다.

5.실질적인 문자를 출력하기 위해서는 printf의 "%c"를 사용하여야 한다.

 

'golang' 카테고리의 다른 글

[golang]Golang 배열(Array) 다루기  (0) 2021.07.04
[golang]Golang 문자열 연산과 결합  (0) 2021.07.04
[golang]문법 정리  (0) 2021.07.01
[golang]Go언어 반복문(for문)  (0) 2021.07.01
[golang]Go언어 실행  (0) 2021.07.01