2014-07-22 19 views
13

Tôi cần phải chuyển đổi một uint32 thành chuỗi. Làm thế nào tôi có thể làm điều đó . strconv.Itoa dường như không hoạt động. Cửa hàng dài: Tôi cần phải chuyển đổi UID nhận được thông qua gói imap thành chuỗi để tôi có thể đặt sau đó một chuỗi. Một lưu ý phụ là tôi tự hỏi tại sao những chuyển đổi như vậy lại gặp nhiều khó khăn trong Go. Một dàn diễn viên string(t) có thể được dễ dàng hơn rất nhiềuLàm thế nào để chuyển đổi uint32 thành chuỗi?

+0

itoa không hoạt động với uint32 // mã UIDI: = imap.AsNumber (rsp.MessageInfo(). UID) – hey

Trả lời

22

tôi chỉ đơn giản sẽ sử dụng sprintf hoặc thậm chí chỉ Sprint:

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

Go được mạnh mẽ gõ. Đúc một số trực tiếp vào một chuỗi sẽ không có ý nghĩa. Hãy suy nghĩ về C trong đó chuỗi là char * là một con trỏ đến chữ cái đầu tiên của chuỗi chấm dứt bởi \0. Việc đưa một số vào một chuỗi sẽ dẫn đến việc có con trỏ chữ cái đầu tiên đến địa chỉ của số, điều này không có ý nghĩa. Đây là lý do tại sao bạn cần phải "tích cực" chuyển đổi.

21

tôi sẽ làm điều này bằng strconv.FormatUint:

import "strconv" 

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

Lưu ý rằng các thông số dự kiến ​​là uint64, vì vậy bạn phải cast của bạn uint32 đầu tiên. Không có hàm FormatUint32 cụ thể.

Các vấn đề liên quan