Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Code Habit

Go ) 문자열 본문

카테고리 없음

Go ) 문자열

코드베어 2020. 5. 8. 09:51

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

 

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

var s7 string = "안녕하세요"

 

문자열의 길이를 구할때는 'len' 함수를 사용한다. 

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 : 문자열의 실제 길이를 구함
}

 

문자열을 비교할 때는 '==' 연산자를, 그리고 여러 문자열을 붙일 때는 '+' 연산자를 사용한다.

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 )// 안녕하세요한글

 

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

var s1 string = "Hello"

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

 

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

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

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

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

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