2012-04-11 40 views

Trả lời

412

Sử dụng chức năng strconv của gói Itoa.

Ví dụ:

package main 

import (
    "strconv" 
    "fmt" 
) 

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

Bạn có thể concat chuỗi đơn giản bằng cách + 'ing họ, hoặc bằng cách sử dụng các chức năng Join của gói strings.

+4

Nếu bạn có nhiều chuỗi liên kết để làm (ví dụ để tạo chuỗi dài) và muốn mã của bạn nhanh hơn và ít phân bổ hơn, bạn nên xem xét sử dụng byte.Buffer quá (đó là một loại phiên bản chung hơn của StringBuilder của Java). –

+9

Tại sao các nhà thiết kế ngôn ngữ nghĩ rằng các hàm bí ẩn có tên như "Itoa" thích hợp hơn với một cái gì đó có thể mô tả hơn một chút? – Luke

+4

@ luke nó xuất phát từ di sản C nơi toàn bộ máy có thể có bộ nhớ 256K; khả năng sử dụng đã được hy sinh để phù hợp với nhiều chức năng hơn. Những người sáng tạo của Go đều gắn bó sâu sắc vào di sản đó và cảm thấy hoàn toàn thoải mái với những cái tên này. – Bryan

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

Nếu bạn biết loại cụ thể của giá trị sử dụng định dạng tương ứng ví dụ %d cho int

Thông tin thêm - fmt

+7

Tôi thích tùy chọn này với việc thêm thư viện. Cảm ơn!!! – didando8a

27

Thật thú vị khi lưu ý rằng strconv.Itoashorthand cho

func FormatInt(i int64, base int) string 

với cơ sở 10

Ví dụ:

strconv.Itoa(123) 

tương đương với

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

undefined: strconv trong strconv.Itoa –

+0

@FeloVilches nhập "strconv" – kgthegreat

21

fmt.Sprintf, strconv.Itoastrconv.FormatInt sẽ thực hiện công việc. Nhưng Sprintf sẽ sử dụng gói reflect, và nó sẽ phân bổ thêm một đối tượng, do đó, nó không phải là một lựa chọn tốt.

enter image description here

-1

Tôi sử dụng đơn giản string(int) từ Type conversion.Hãy thử

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

Không chắc về (và google không hiển thị) nhầm lẫn có thể nhưng hoạt động tốt trên tất cả các dự án của tôi.

+0

Cố gắng thay đổi i thành 80 và sau đó thực hiện 'fmt.Printf (" chuyển đổi:% s \ n ", chuỗi (i))'. Bạn nhận được 'P', không phải' 80' –

+0

@ JørnJensen, bạn nói đúng – vladkras

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