spf13/cast
Kho lưu trữ: spf13/cast: safe and easy casting from one type to another in Go (github.com)
Tài liệu: spf13/cast: safe and easy casting from one type to another in Go (github.com)
Giới thiệu
cast là một thư viện chuyển đổi kiểu đơn giản, dùng để chuyển đổi nhanh từ kiểu này sang kiểu khác, có thể tiết kiệm nhiều thao tác phức tạp.
Cài đặt
go get github.com/spf13/castVí dụ
Chuỗi
go
cast.ToString("mayonegg") // "mayonegg"
cast.ToString(8) // "8"
cast.ToString(8.31) // "8.31"
cast.ToString([]byte("one time")) // "one time"
cast.ToString(nil) // ""
var foo interface{} = "one more time"
cast.ToString(foo) // "one more time"Số nguyên
go
cast.ToInt(8) // 8
cast.ToInt(8.31) // 8
cast.ToInt("8") // 8
cast.ToInt(true) // 1
cast.ToInt(false) // 0
var eight interface{} = 8
cast.ToInt(eight) // 8
cast.ToInt(nil) // 0Số thực
go
cast.ToFloat64(8) // 8.0
cast.ToFloat64(8.31) // 8.31
cast.ToFloat64("8.31") // 8.31
cast.ToFloat64(nil) // 0.0
var foo interface{} = 8.31
cast.ToFloat64(foo) // 8.31Boolean
go
cast.ToBool(true) // true
cast.ToBool(1) // true
cast.ToBool("true") // true
cast.ToBool("True") // true
cast.ToBool("TRUE") // true
cast.ToBool(0) // false
cast.ToBool("false") // false
cast.ToBool(nil) // false
var foo interface{} = true
cast.ToBool(foo) // trueThời gian
go
cast.ToTime("2023-01-01") // time.Time
cast.ToTime("2023-01-01 12:00:00") // time.Time
cast.ToTime(time.Now()) // time.Time
cast.ToTime(nil) // zero time
cast.ToDuration("1h") // time.Duration
cast.ToDuration("1m") // time.Duration
cast.ToDuration("1s") // time.DurationCác hàm chuyển đổi an toàn
Cast cung cấp các hàm chuyển đổi an toàn với hậu tố E để trả về lỗi:
go
str, err := cast.ToStringE("hello")
if err != nil {
// Xử lý lỗi
}
num, err := cast.ToIntE("abc")
if err != nil {
// err sẽ không nil vì "abc" không thể chuyển thành số nguyên
}Các hàm chuyển đổi với giá trị mặc định
Cast cũng cung cấp các hàm với hậu tố E để trả về lỗi và giá trị mặc định:
go
// Sử dụng giá trị mặc định khi chuyển đổi thất bại
num := cast.ToInt("abc") // Trả về 0 khi thất bại
// Hoặc sử dụng hàm với E để xử lý lỗi
num, err := cast.ToIntE("abc")
if err != nil {
num = 42 // Giá trị mặc định
}Best Practices
- Sử dụng hàm an toàn: Sử dụng các hàm có hậu tố
Ekhi cần xử lý lỗi - Kiểm tra nil: Cast xử lý nil an toàn nhưng nên kiểm tra trước khi cần
- Performance: Cast được tối ưu hóa tốt cho hầu hết các trường hợp
- Type safety: Luôn kiểm tra kiểu dữ liệu đầu vào khi không chắc chắn
Kết luận
spf13/cast là một thư viện hữu ích cho việc chuyển đổi kiểu dữ liệu trong Go. Với cú pháp đơn giản và an toàn, cast giúp giảm thiểu code boilerplate và xử lý lỗi khi chuyển đổi giữa các kiểu dữ liệu khác nhau.
