2014-07-22 27 views
13

Potrzebuję przekonwertować uint32 na ciąg. Jak mogę to zrobić . strconv.Itoa nie działa. Długi magazyn: Potrzebuję konwertować UID odebrany przez pakiet IMAP na ciąg, aby móc ustawić go później w sekwencji. Na marginesie zastanawiam się, dlaczego takie konwersje są trudne w Go. Odlewane string(t) mogło być o wiele łatwiejJak przekonwertować uint32 na ciąg?

+0

itoa nie działa z użyciem uint32 // kod UIDI: = imap.AsNumber (rsp.MessageInfo(). UID) – hey

Odpowiedz

22

ja po prostu używać sprintf lub nawet tylko Sprint:

var n uint32 = 42 
str := fmt.Sprint(n) 
println(str) 

Go jest silnie wpisany. Przesyłanie numeru bezpośrednio na ciąg nie ma sensu. Pomyśl o C, gdzie ciąg znaków to char *, który jest wskaźnikiem pierwszej litery ciągu znaków zakończonego przez \0. Przesłanie numeru do łańcucha spowodowałoby umieszczenie pierwszego wskaźnika na adresie numeru, co nie ma sensu. Właśnie dlatego musisz "aktywnie" konwertować.

21

I byłoby to zrobić za pomocą strconv.FormatUint:

import "strconv" 

var u uint32 = 17 
var s = strconv.FormatUint(uint64(u), 10) 
// "17" 

Zauważ, że oczekiwany parametr jest uint64, więc trzeba oddać swój uint32 pierwszy. Nie ma konkretnej funkcji FormatUint32.

Powiązane problemy