Go 언어

본문 바로가기
사이트 내 전체검색


Go 언어
Go 언어

4. 문자열 사용하기

페이지 정보

작성자 관리자 댓글 0건 조회 2,512회 작성일 19-03-09 18:17

본문

4. 문자열 사용하기

Go 언어는 문자열을 저장할 수 있는 변수를 제공한다. 문자열은 ""(따옴표)로 묶어주어야 하며, 알파벳, 한글, 한자 등 UTF-8로 표현할 수 있는 문자를 사용할 수 있다.

문자대신에 \u 또는 \U를 사용하여 유니코드 문자코드로 저장할 수도 있으며 \U는 값을 16진수 8자리로 맞춰주어야 한다.

\x는 UTF-8 인코딩의 바이트 값을 그대로 저장할 때 사용한다.


package main

import "fmt"

func main() {

 var s1 string = "Hello, world!\n"
 var s2 string = "안녕하세요\n"
 var s3 string = "\ud55c\uae00"             // 한글: 유니코드 문자 코드로 저장
 var s4 string = "\U0000d55c\U0000ae00"     // 한글: 유니코드 문자 코드로 저장
 var s5 string = "\xed\x95\x9c\xea\xb8\x80" // 한글: UTF-8 인코딩의 바이트 값으로 저장

 var s7 string = `안녕하세요
 Hello, world!`

 fmt.Println(s1)
 fmt.Println(s2)
 fmt.Println(s3)
 fmt.Println(s4)
 fmt.Println(s5)
 fmt.Println(s7)

} 


여러줄로 된 문자열 저장할 때는 ``(백쿼터)로 묶어준다.


var s7 string = `안녕하세요
 Hello, world!`



1. 문자열 길이 구하기


문자열 변수에 저장된 문자열의 길이를 구할 때는 len 함수를 사용한다.


여기서 "한글" 문자열의 길이는 2가 아닌 6이다. "한글"을 UTF-8로 저장하면 0xed, 0x95, 0x9c, 0xea, 0xb8, 0x80 이기 때문이다.

"Hello"는 문자열 길이 그대로 5이다.


package main

import "fmt"

func main() {

 var s1 string = "한글"
 var s2 string = "Hello"

 fmt.Println(len(s1)) // 6: UTF-8 인코딩의 바이트 길이이므로 6
 fmt.Println(len(s2)) // 5: 알파벳 5글자이므로 5

}



한글, 한자 등 UTF-8로 저장했을 때, 2바이트가 넘는 문자열의 길이를 구하려면 다음과 같이 unicode/utf8 패키지의 RuneCountInString 함수를 사용한다.


package main

import "fmt"
import "unicode/utf8"

func main() {

 var s1 string = "한글"
 fmt.Println(utf8.RuneCountInString(s1)) // 2: 문자열의 실제 길이를 구함

}



2. 문자열 연산하기


문자열을 비교할때는 ==연산자를 사용한다.

여러문자열을 붙일 때는 +연산자를 사용한다.


package main

import "fmt"

func main() {

 var s1 string = "한글"
 var s2 string = "한글"
 var s3 string = "Go"

 fmt.Println(s1 == s2)          // true: 두 문자열이 같으므로 true
 fmt.Println(s1 + s3 + s2)      // 한글Go한글
 fmt.Println("안녕하세요" + s1) // 안녕하세요한글

}


문자열은 배열과 동일하게 [](대괄호)로  각 문자를 가져올 수 있다.

배열은 0부터 시작한다. 따라서 첫 번째 문자는 s1[0]이다.


package main

import "fmt"

func main() {

 var s1 string = "Hello"

 fmt.Printf("%c\n", s1[1]) // e: 문자열에서 두 번째 문자 e

}


3. 문자열 수정하기


Go 언어는 변수에 문자열을 저장한 뒤 내용을 수정할 수 없다.

다음과 같이 문자열 변수를 선언하여 문자열을 대입한 뒤 다른 문자열을 다시 대입할 수 는 있지만 문자열의 내용을 수정하려고 하면 컴파일 에러가 발생한다.


package main

import "fmt"

func main() {

 var s1 string = "Hello, world!\n"

 s1 = "abcdefg" // 다른 문자열을 대입할 수 있음

 fmt.Println(s1[0]) // 97: ASCII 코드 a, 배열 형태로 각 문자에 접근

 s1[0] = 'z' // 컴파일 에러

}


문자열은 문자의 배열 형태이므로 s1[0]처럼 각 문자를 가져올 수 있다. 하지만 문자열을의 내용을 직접 수정할 수 없다.










댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.