2012-04-11 13 views

Odpowiedz

412

Użyj funkcji pakietu strconv pakietu Itoa.

Na przykład:

package main 

import (
    "strconv" 
    "fmt" 
) 

func main() { 
    t := strconv.Itoa(123) 
    fmt.Println(t) 
} 

Można Concat ciągi prostu + „je ing, lub za pomocą funkcji Join pakietu strings.

+4

Jeśli masz dużo konkatenacji ciągów (na przykład, aby zbudować długi łańcuch) i chcesz, aby twój kod był szybszy i przy mniejszej ilości przydziałów, powinieneś rozważyć użycie również bytes.Buffer (jest to rodzaj bardziej ogólnej wersji Java StringBuilder). –

+9

Dlaczego projektanci języków myśleli, że funkcje kryptyczne, takie jak "Itoa", są lepsze od czegoś, co może być nieco bardziej opisowe? – Luke

+4

@luke pochodzi z dziedzictwa C, w którym cała maszyna może mieć pamięć 256K; użyteczność została poświęcona, aby pasować do większej funkcjonalności. Twórcy Go są głęboko osadzeni w tym dziedzictwie i czują się całkowicie komfortowo z tymi nazwami. – Bryan

76
fmt.Sprintf("%v",value); 

Jeśli znasz konkretny typ wartości użyj odpowiedniego formatowania np %d dla int

Więcej info - fmt

+7

Podoba mi się ta opcja bez dodawania bibliotek. Dzięki!!! – didando8a

27

Warto zwrócić uwagę, że strconv.Itoa jest shorthand dla

func FormatInt(i int64, base int) string 

z podstawą 10

Na przykład:

strconv.Itoa(123) 

odpowiada

strconv.FormatInt(int64(123), 10) 
+0

undefined: strconv in strconv.Itoa –

+0

@FeloVilches import "strconv" – kgthegreat

21

fmt.Sprintf, strconv.Itoa i strconv.FormatInt się do pracy. Ale Sprintf użyje pakietu reflect i przydzieli jeszcze jeden obiekt, więc nie jest to dobry wybór.

enter image description here

-1

Używam prostego string(int) z Type conversion.Spróbuj

package main 

import (
    "fmt" 
) 

func main() { 
    var i int = 1 
    fmt.Printf(" i type: %T\n", i) 
    fmt.Printf("convert: %T\n", string(i)) 
} 

>> Play

Nie jestem pewien (a Google nie pokazuje) ewentualnych nieporozumień, ale działa dobrze na wszystkich moich projektów.

+0

Spróbuj zmienić i na 80, a następnie wykonaj 'fmt.Printf (" convert:% s \ n ", string (i))'. Otrzymujesz 'P', nie' 80' –

+0

@ JørnJensen, masz rację – vladkras