Go에서 string은 변경할 수 없는 바이트 시퀀스예요. 이 바이트가 반드시 문자를 나타내야 하는 것은 아니에요.
문자열 리터럴은 큰따옴표 사이에 적어요:
const name = "Jane"
문자열은 + 연산자로 이어 붙일 수 있어요:
"Jane" + " " + "Austen"
// => "Jane Austen"
일부 특수 문자는 앞에 백슬래시를 붙여 이스케이프해야 해요. 예를 들어 문자열에서 탭은 \t로, 새 줄은 \n으로 나타내요.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
strings 패키지에는 문자열을 다루는 유용한 함수가 많이 들어 있어요.
문자열 함수에 대해 더 자세히 알고 싶다면 strings 패키지 문서를 확인해 봐요.
다음은 몇 가지 예시예요:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
앞서 말했듯이, 일부 특수 문자는 앞에 백슬래시를 붙여 이스케이프해야 해요. 다음은 그 특수 문자들을 더 자세히 정리한 목록이에요:
| 값 | 설명 |
|---|---|
\a |
경고음 또는 벨 |
\b |
백스페이스 |
\\ |
백슬래시 |
\t |
가로 탭 |
\n |
라인 피드 또는 줄 바꿈 |
\f |
폼 피드 |
\r |
캐리지 리턴 |
\v |
세로 탭 |
\' |
작은따옴표 |
\" |
큰따옴표 |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
원시 문자열 리터럴은 큰따옴표 대신 백틱(`)을 구분자로 사용하며, 안에 있는 모든 문자가 그대로 해석돼요. 그래서 문자나 줄 바꿈을 이스케이프할 필요가 없어요.
다음은 여러 줄 문자열의 예시예요:
const daltons = `Joe
William
Jack
Averell`
이 문자열은 여러 줄로 되어 있어요.
더 정확히는 \n이 세 개 있어요.
하지만 원시 문자열 리터럴이기 때문에 \n을 문자열에 직접 넣을 필요가 없어요.
줄 바꿈은 그대로 해석돼요.
다음은 원시 문자열 리터럴과 일반 문자열 리터럴을 비교한 몇 가지 예시예요:
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'