Go에는 Python의 여러 줄 문자열과 비슷한 것이 있습니까?
"""line 1
line 2
line 3"""
그렇지 않은 경우 여러 줄에 걸쳐있는 문자열을 작성하는 기본 방법은 무엇입니까?
답변
에 따르면 언어 사양 당신은 문자열 대신 큰 따옴표의 역 따옴표로 구분되는 원시 문자열 리터럴을 사용할 수 있습니다.
`line 1
line 2
line 3`
답변
당신은 쓸 수 있습니다:
"line 1" +
"line 2" +
"line 3"
이는 다음과 같습니다.
"line 1line 2line3"
백틱을 사용하는 것과 달리 이스케이프 문자를 유지합니다. “+”는 반드시 ‘leading’줄에 있어야합니다.
"line 1"
+"line 2"
오류를 생성합니다.
답변
에서 문자열 리터럴 :
- 원시 문자열 리터럴은 여러 줄을 지원하지만 이스케이프 된 문자는 해석되지 않습니다.
- 해석 된 문자열 리터럴은 ‘
\n
‘ 와 같이 이스케이프 된 문자를 해석합니다 .
그러나 여러 줄 문자열에 백 따옴표 (`)를 포함해야하는 경우 해석 된 문자열 리터럴을 사용해야합니다.
`line one
line two ` +
"`" + `line three
line four`
원시 문자열 리터럴 (“xx ”)에는 역 따옴표 (`)를 직접 넣을 수 없습니다 \
.
” 뒤 인용 된 문자열에 역 따옴표를 넣는 방법 “에 설명 된대로 사용해야합니다 .
+ "`" + ...
답변
여러 줄 문자열에 원시 문자열 리터럴을 사용하십시오.
func main(){
multiline := `line
by line
and line
after line`
}
원시 문자열 리터럴
원시 문자열 리터럴은에서와 같이 백 따옴표 사이의 문자 시퀀스입니다
`foo`
. 따옴표 안에는 따옴표를 제외한 모든 문자가 나타날 수 있습니다.
중요한 부분은 단순한 다중 행이 아닌 원시 리터럴이며 다중 행이 유일한 목적은 아니라는 것입니다.
원시 문자열 리터럴의 값은 따옴표 사이에 해석되지 않은 (암시 적으로 UTF-8로 인코딩 된) 문자로 구성된 문자열입니다. 특히 백 슬래시는 특별한 의미가 없습니다 …
따라서 이스케이프는 해석되지 않으며 틱 사이의 새 줄은 실제 새 줄이 됩니다.
func main(){
multiline := `line
by line \n
and line \n
after line`
// \n will be just printed.
// But new lines are there too.
fmt.Print(multiline)
}
연쇄
아마도 당신은 당신이 끊고 싶은 긴 줄을 가지고 있으며 그것에 새로운 줄이 필요하지 않습니다. 이 경우 문자열 연결을 사용할 수 있습니다.
func main(){
multiline := "line " +
"by line " +
"and line " +
"after line"
fmt.Print(multiline) // No new lines here
}
“”는 해석되므로 문자열 리터럴 이스케이프는 해석됩니다.
func main(){
multiline := "line " +
"by line \n" +
"and line \n" +
"after line"
fmt.Print(multiline) // New lines as interpreted \n
}
답변
이동 및 여러 줄 문자열
백틱을 사용하면 여러 줄 문자열을 가질 수 있습니다.
package main
import "fmt"
func main() {
message := `This is a
Multi-line Text String
Because it uses the raw-string back ticks
instead of quotes.
`
fmt.Printf("%s", message)
}
큰 따옴표 (“) 또는 작은 따옴표 ( ‘)를 사용하는 대신 백틱을 사용하여 문자열의 시작과 끝을 정의하십시오. 그런 다음 여러 줄로 줄 바꿈 할 수 있습니다.
문자열을 들여 쓰면 공백이 포함된다는 점을 기억하십시오.
놀이터를 확인하고 실험 해보십시오.
답변
주위에“로 내용을 넣을 수 있습니다.
var hi = `I am here,
hello,
`
답변
이동 중에도 서식과 줄 간격에 매우주의해야합니다. 모든 것이 중요하며 여기에는 작동하는 샘플이 있습니다. https://play.golang.org/p/c0zeXKYlmF
package main
import "fmt"
func main() {
testLine := `This is a test line 1
This is a test line 2`
fmt.Println(testLine)
}