920 Stimmen

Wie schreibt man mehrzeilige Strings in Go?

Hat Go etwas Ähnliches wie Pythons mehrzeilige Zeichenketten:

"""line 1
line 2
line 3"""

Wenn nicht, was ist die bevorzugte Art, Zeichenketten zu schreiben, die sich über mehrere Zeilen erstrecken?

9voto

Bilal Khan Punkte 1

Das Erstellen einer mehrzeiligen Zeichenkette in Go ist eigentlich unglaublich einfach. Verwenden Sie einfach das Backtick-Zeichen (`), wenn Sie Ihren String-Wert deklarieren oder zuweisen.

package main

import (
    "fmt"
)

func main() {
    // String in multiple lines
    str := `This is a
multiline
string.`
    fmt.Println(str + "\n")

    // String in multiple lines with tab
    tabs := `This string
        will have
        tabs in it`
    fmt.Println(tabs)
}

5voto

liam Punkte 341

Sie können den Inhalt mit `` umschließen, z.B.

var hi = `I am here,
hello,
`

4voto

David Punkte 787

Sie müssen sehr sorgfältig auf die Formatierung und den Zeilenabstand in go achten, alles zählt, und hier ist ein funktionierendes Beispiel, probieren Sie es aus 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)
}

3voto

Prabesh P Punkte 150

Können Sie rohe Literale verwenden. Beispiel

s:=`stack
overflow`

3voto

Carson Punkte 3411

Für mich muss ich Folgendes verwenden ` Schwerer Akzent/Backquote und schreiben Sie einfach einen einfachen Test

+ "`" + ...

ist hässlich und lästig

also nehme ich eine Figur zum Beispiel: U+1F42C um es zu ersetzen


eine Vorführung

myLongData := `line1
line2 aaa
line3
` // maybe you can use IDE to help you replace all ` to 
myLongData = strings.ReplaceAll(myLongData, "", "`")

Go Playground

Leistungs- und Speicherbewertung

+ "`" v.s. replaceAll(, "", "`")

package main

import (
    "strings"
    "testing"
)

func multilineNeedGraveWithReplaceAll() string {
    return strings.ReplaceAll(`line1
line2
line3 aaa`, "", "`")
}

func multilineNeedGraveWithPlus() string {
    return `line1
line2
line3` + "`" + "aaa" + "`"
}

func BenchmarkMultilineWithReplaceAll(b *testing.B) {
    for i := 0; i < b.N; i++ {
        multilineNeedGraveWithReplaceAll()
    }
}

func BenchmarkMultilineWithPlus(b *testing.B) {
    for i := 0; i < b.N; i++ {
        multilineNeedGraveWithPlus()
    }
}

cmd

go test -v -bench=. -run=none -benchmem mehr sehen Prüfung.B

Ausgabe

goos: windows
goarch: amd64
pkg: tutorial/test
cpu: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
BenchmarkMultilineWithReplaceAll
BenchmarkMultilineWithReplaceAll-8    12572316      89.95 ns/op   24 B/op  1 allocs/op
BenchmarkMultilineWithPlus
BenchmarkMultilineWithPlus-8          1000000000   0.2771 ns/op    0 B/op  0 allocs/op
PASS
ok      tutorial/test   7.566s

Ja, die + "`" hat eine bessere Leistung als die andere.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X