chapter 2 에서 이미 살펴봤듯이 문자열은 텍스트를 표현하기 위한 길이를 가진 문자의 나열이다.
Go strings 은 개별 바이트로 이루어지며, 보통 문자 하나에 하나의 바이트를 가지지만, 중국어와 같은 문자는 하나 이상의 바이트를 가지기도 한다.
String literals은 "Hello World"와 같이 큰 따옴표로 감싸거나, `Hello World` 와 같이 역따옴표 감싼다. 이 2가지의 차이점은 큰따옴표의 경우 줄바꿈을 포함할 수 없으며 특정 escape 시퀀스를 허용한다는점이다. 예를 들어, \n 은 줄바꿈을, 그리고 \t 은 탭으로 대체된다.
문자열의 길이를 잰다거나, 문자열의 개별 문자에 접근하기, 그리고 2개의 문자열을 합치는 기능이 있다. 아래의 예를 보자.
1 2 3 4 5 6 7 8 9 | package main import "fmt" func main() { fmt.Println(len("Hello World")) fmt.Println("Hello World"[1]) fmt.Println("Hello " + "World") } | cs |
1 2 3 4 | ~/go/src/golang-book/chapter2# go run main.go 11 101 Hello World | cs |
주의할 점은 다음과 같다. 스페이스는 하나의 문자로 간주되므로, 문자열의 길이는 10이 아닌 11이 된다. 그리고 라인 8의 Hello 는 "Hello"가 아니라 "Hello "가 된다.
문자열 인덱스는 1이 아니라 0에서부터 시작된다. [1]은 1번째가 아닌 2번째 원소를 가리킨다. 그리고 2번째 원소인 e가 아니라 101이 반환되는 것을 볼 수 있는데, 그 이유는 문자는 바이트로 표현되기 때문이다.
"Hello World"1
와 같이 보여주면 이해가 빠를 것이다. 이는 다음과 같은 의미이다.
- “The string Hello World sub 1”
- “The string Hello World at 1”
- “The second character of the string Hello World”.
결합은 더하기와 같은 + 기호를 사용한다. Go 컴파일러는 2개의인수의 타입에 기반하여 + 의 의미를 해석한다. 2개의 인수가 모두 문자열인 경우 더하기(addition)의 의미가 아닌 결합(concatenation) 연산자로 작동한다.
'프로그래밍 Programming' 카테고리의 다른 글
Go 언어 입문 - Variables (golang-book) (0) | 2018.08.28 |
---|---|
Go 언어 입문 - Types - Booleans (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Types - Numbers (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Your First Program (golang-book) (0) | 2018.08.27 |
Strings, bytes, runes and characters in Go - (4) Range loops, Libraries (0) | 2018.08.25 |