i := 123
s := string(i)
s to „E”, ale to, czego chcę, to „123”
Powiedz mi, jak mogę uzyskać „123”.
A w Javie mogę zrobić w ten sposób:
String s = "ab" + "c" // s is "abc"
Jak mogę concat
dwa ciągi w Go?
string
go
int
converters
hardPass
źródło
źródło
Odpowiedzi:
Użyj funkcji
strconv
pakietuItoa
.Na przykład:
Możesz konkatować łańcuchy, po prostu je
+
pisząc, lub używającJoin
funkcjistrings
pakietu.źródło
Jeśli znasz konkretny typ wartości, użyj odpowiedniego formatyzatora, na przykład
%d
dlaint
Więcej informacji - fmt
źródło
%d
dla int - thisInteresujące jest to, aby pamiętać, że
strconv.Itoa
jest skrótem dlaz podstawą 10
Na przykład:
jest równa
źródło
fmt.Sprintf
,strconv.Itoa
Istrconv.FormatInt
będzie wykonać zadanie. AleSprintf
użyje pakietureflect
i przydzieli jeszcze jeden obiekt, więc nie jest to skuteczny wybór.źródło
Możesz użyć fmt.Sprintf
Zobacz na przykład http://play.golang.org/p/bXb1vjYbyc .
źródło
W tym przypadku oba
strconv
ifmt.Sprintf
wykonują tę samą pracę, ale użycie funkcjistrconv
pakietuItoa
jest najlepszym wyborem, ponieważfmt.Sprintf
przy konwersji przydziel jeszcze jeden obiekt.sprawdź test tutaj: https://gist.github.com/evalphobia/caee1602969a640a4530
patrz na przykład https://play.golang.org/p/hlaz_rMa0D .
źródło
fmt.Sprintf
istrconv.iota
są podobne pod względem łatwości użycia, a powyższe dane pokazują, że jota jest szybsza przy mniejszym wpływie GC, wydaje się, żeiota
należy ją stosować ogólnie, gdy jedna liczba całkowita wymaga konwersji.Konwertowanie
int64
:źródło
ok, większość z nich pokazała ci coś dobrego. Dam ci to:
źródło
źródło