Jestem nowicjuszem w golangu. Nie mogę znaleźć żadnego oficjalnego dokumentu, który pokazuje, w jaki sposób scalić wiele żądań na łańcuchu.
Czego spodziewa:
Wejście: "klucz:", "wartość", "Klawisz2:" 100
Wyjście: "Klucz: wartość, klucz2: 100"Jak połączyć wiele ciągów znaków i int w pojedynczy ciąg znaków w golangu?
Odpowiedz
lubię użyj metody fmt na Sprintf
dla tego typu rzeczy. Działa jak normalnie Printf
w Go lub C tylko zwraca ciąg znaków. Oto przykład;
output := fmt.Sprintf("%s%s%s%d", "key:", "value", ", key2:", 100)
Go docs dla fmt.Sprintf
ostatni to numer int. Czy mogę użyć% d? –
@RobertYiJiang tak, będę edytować w rzeczywistości. Nie zdawałem sobie sprawy, że zmieniłem typ wejścia tam. – evanmcdonnal
Można używać strings.Join, który jest prawie 3x szybciej niż fmt.Sprintf. Jednak może być mniej czytelny.
output := strings.Join([]string{"key:", "value", ", key2:", strconv.Itoa(100)}, "")
Zobacz https://play.golang.org/p/AqiLz3oRVq
strings.Join vs fmt.Sprintf
BenchmarkFmt-4 2000000 685 ns/op
BenchmarkJoins-4 5000000 244 ns/op
Buffer
Jeśli trzeba scalić wiele strun, bym rozważyć przy użyciu bufora, a nie tych rozwiązań wspomnianych powyżej.
Cóż, jeśli używasz pliku strconv.Itoa, możesz również łączyć łańcuchy z + –
@ColinPitrat Z powodu problemu z kompilatorem go, string.Join z 2 lub 3 elementów używa +, ale powyżej tworzy bajtowy segment dla bardziej wydajne łączenie. Jeśli masz więcej niż dwa elementy do konkatenacji, zdecydowanie zaleca się używanie napisów .Join. – basgys
Możliwy duplikat [Golang: sformatować ciąg bez drukowania?] (Http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing) – icza