У меня очень длинная очередь в fmt.Sprintf. Как мне разделить это в коде? Я не хочу помещать все в одну строку, чтобы код выглядел некрасиво.
fmt.Sprintf("a:%s, b:%s ...... this goes really long")
У меня очень длинная очередь в fmt.Sprintf. Как мне разделить это в коде? Я не хочу помещать все в одну строку, чтобы код выглядел некрасиво.
fmt.Sprintf("a:%s, b:%s ...... this goes really long")
Используйте объединение строк для создания одного строкового значения в нескольких строках:
fmt.Sprintf("a:%s, b:%s " +
" ...... this goes really long",
s1, s2)
Длинная строка в этом примере строится во время компиляции, поскольку конкатенация строк является постоянным выражением.
Вы можете разбить строку на содержащиеся символы новой строки, используя необработанный строковый литерал:
fmt.Sprintf(`this text is on the first line
and this text is on the second line,
and third`)
Вы также можете использовать необработанные строковые литералы внутри обратных кавычек, например:
columns := "id, name"
table := "users"
query := fmt.Sprintf(`
SELECT %s
FROM %s
`, columns, table)
fmt.Println(query)
В этом подходе есть несколько предостережений:
FROM
.Эти проблемы могут быть проблемой для некоторых, а пробелы приведут к уродливым результирующим строкам. Тем не менее, я предпочитаю этот подход, поскольку он позволяет копировать и вставлять длинные сложные SQL-запросы вне вашего кода и в другие контексты, такие как листы SQL для тестирования.
Поскольку вы уже используете Sprintf
(это означает, что у вас будет строка типа «это строка с %s заполнителями в ней»), вы можете просто добавить в строку больше заполнителей, а затем поместить туда нужные значения. их собственные линии, как;
fmt.Sprintf("This %s is so long that I need %s%s%s for the other three strings,
"string",
"some super long statement that I don't want to type on 50 lines",
"another one of those",
"yet another one of those")
Другой вариант — просто использовать конкатенацию строк, например "string 1" + "string 2"
.
Почему бы вам не разделить это:
fmt.Sprintf("a:%s, b:%s ", x1, x2)
fmt.Sprintf("...... ")
fmt.Sprintf("this goes really long")
Или вы можете разделить их с помощью знака плюс, как указано MuffinTop.
Другой вариант strings.Builder
:
package main
import (
"fmt"
"strings"
)
func main() {
b := new(strings.Builder)
fmt.Fprint(b, "North")
fmt.Fprint(b, "South")
println(b.String() == "NorthSouth")
}
https://golang.org/pkg/strings#Builder