IT/Go

[Go/Golang] Raw(`) string과 Interpreted(") string의 차이점을 알아보자

wookiist 2021. 2. 22. 20:52

Golang에서 String을 표현하는 방법에는 두 가지가 있습니다.

Double Quote (") - Interpreted string

첫 번째는 흔히 사용하는 쌍따옴표(double-quote, ") 방식입니다. Go에서는 쌍따옴표로 열리고 닫힌 string을 Interpreted string이라 부릅니다. 예를 들자면 이렇습니다.

interpretedString := "interpreted string"

Backtick (`) - Raw string

두 번째는 역따옴표(backtick, `) 방식입니다. 역따옴표로 열리고 닫힌 string은 Raw string이라 합니다. 예를 들자면 이렇습니다.

rawString := `raw string`

차이점

Interpreted string

double quote를 이용한 Interpreted String은 이스케이프 문자(\로 시작하는 특수한 문자)를 이스케이프 문자로써 인식합니다. 다음의 예를 보면 될 것 같습니다.

str0 := "abc"
fmt.Println(str0) // abc

str1 := "Hello,\nWorld!"
fmt.Println(str1) // Hello, 
                  // World!

str2 := "\""
fmt.Println(str2) // "

즉, Interpreted String은 이스케이프 문자인 개행 문자(newline, '\n')를 개행 문자 그 자체로 받아들입니다.

Raw string

반면, backtick을 이용한 Raw String은 이스케이프 문자를 이스케이프 문자로 받아들이지 않습니다. 오히려 그 자체를 출력합니다.

str0 := `abc`
fmt.Println(str0) // abc

str1 := `Hello,\nWorld!`
fmt.Println(str1) // Hello,\nWorld!

str2 := `\"`
fmt.Println(str2) // \"

Raw string은 보통 JSON 형식의 String을 처리할 때 종종 사용하게 됩니다. JSON key value가 일반적으로 쌍따옴표로 이루어진 string이기 때문에 이를 Interpreted string으로 나타내게 되면 쌍따옴표 구분을 명확하게 해줘야 해서 번거롭기 때문입니다.

반응형