Я новичок в Go. Я не могу найти никаких официальных документов, показывающих, как объединить несколько строк в новую строку.

Чего я жду:

Ввод : "key:", "value", ", key2:", 100

Вывод : "Key:value, key2:100"

Я хочу использовать + для объединения строк, как в Java и Swift, если это возможно.

40
Yi Jiang 25 Фев 2016 в 03:14

3 ответа

Лучший ответ

Мне нравится использовать метод fmt Sprintf для этого типа вещей. Он работает как Printf в Go или C, только возвращает строку. Вот пример:

output := fmt.Sprintf("%s%s%s%d", "key:", "value", ", key2:", 100)

Перейти к документации для fmt.Sprintf

69
Arnav Borborah 24 Июл 2020 в 01:21

Вы можете просто сделать это:

import (
    "fmt" 
    "strconv"
)

func main() {


     result:="str1"+"str2"+strconv.Itoa(123)+"str3"+strconv.Itoa(12)
     fmt.Println(result)

}

Использование fmt.Sprintf ()

var s1="abc"
var s2="def"
var num =100
ans:=fmt.Sprintf("%s%d%s", s1,num,s2);
fmt.Println(ans);
2
Sandeep Patel 18 Апр 2020 в 18:27

Вы можете использовать strings.Join, что почти в 3 раза быстрее, чем fmt.Sprintf. Однако он может быть менее читабельным.

output := strings.Join([]string{"key:", "value", ", key2:", strconv.Itoa(100)}, "")

См. https://play.golang.org/p/AqiLz3oRVq.

strings.Join vs fmt.Sprintf

BenchmarkFmt-4       2000000           685 ns/op
BenchmarkJoins-4     5000000           244 ns/op

Буфер

Если вам нужно объединить много строк, я бы подумал об использовании буфера, а не о решениях, упомянутых выше.

23
basgys 25 Фев 2016 в 10:29