카테고리 없음
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' // 컴파일 에러