Cách Convert Integer sang String trong Golang
Trong Golang bạn có thể nối chuỗi theo một số cách khác nhau trong đó hai cách phổ biến được sử dụng đó là: Sử dụng strconv hoặc Sử dụng Sprintf Sử Dụng Package strconv Với cách này thì bạn có thể sử dụng public method .Itoa() có trong package strconv để chuyển đổi integer sang ...
Trong Golang bạn có thể nối chuỗi theo một số cách khác nhau trong đó hai cách phổ biến được sử dụng đó là:
- Sử dụng strconv hoặc
- Sử dụng Sprintf
Sử Dụng Package strconv
Với cách này thì bạn có thể sử dụng public method .Itoa() có trong package strconv để chuyển đổi integer sang string:
func Itoa(integerToConvert int) string
Ví dụ như sau:
package main import ( "fmt" "strconv" ) func main() { fmt.Println("Helllo " + strconv.Itoa(2018)) }
Ngoài method .Itoa() trên thì cũng các method tương tự khác trong strconv như .FormatInt() giúp chúng ta có thể thực hiện công việc tương tự. Bạn đọc cũng lưu ý với cách làm làm thì trong source code của file Golang bạn cần import một package strconv trước khi sử dụng.
Sử Dụng Package fmt
Package fmt trong Golang cung cấp public method Sprintf() dùng để format dữ liệu dựa trên format được quy định trước và trả về chuỗi String.
func Sprintf(formatIdentifier string, a ...interface{}) string
Giá trị của đối số truyền vào cho tham số formatIdentifier ở trên tuỳ vào vào format bạn muốn trả về. Ở đây bạn có thể sử dụng %d cho số nguyên, %s cho chuỗi, %v hoặc %#v cho struct...
Ví dụ:
package main import ( "fmt" ) func main() { fmt.Println(fmt.Sprintf("%s %d", "Helllo", 2018)) }
Ở đoạn code trên bạn cần lưu ý hai điều:
- Thứ nhất: Bạn cần import package fmt để có thể sử dung Sprintf.
- Thứ hai: Hàm fmt.Sprintf() không xuất ra kết quả ra standard output (stdout) mà chỉ trả về giá trị là một chuỗi. Do đó nếu muốn in ra kết quả bạn cần sử dụng thêm fmt.Println() hoặc một method tương tự.
Nên Dùng fmt.Sprintf() hay strconv.Itoa()
Xét về mặt performance thì sử dụng fmt.Sprintf() sẽ tốn ít bộ nhớ RAM hơn, tuy nhiên lại có tốc độ xử lý chậm hơn strconv.Itoa(). Dưới đây là kết quả thu về sau khi thực hiện benchmark so sánh performance giữa hai method trên:
BenchmarkItoa 30000000 52.6 ns/op 2 B/op 1 allocs/op BenchmarkItoaSprintf 5000000 299 ns/op 16 B/op 2 allocs/op BenchmarkItoaBig 10000000 140 ns/op 16 B/op 1 allocs/op BenchmarkItoaSprintfBig 5000000 363 ns/op 24 B/op 2 allocs/op
Cột đầu tiên mỗi dòng sẽ bao gồm tên method Itoa hoặc Sprintf và kiểm tra với hai trường hợp dữ liệu là Integer thông thường và dữ liệu là Big Integer. Cột tiếp theo hiển thị dung lượng bộ nhớ sử dụng và cột tiếp sau là thời gian sử dụng của mỗi method.