Skip to content

size

dstgo/size là một thư viện rất tiện lợi để chuyển đổi qua lại giữa chuỗi và kích thước file

Địa chỉ kho lưu trữ: dstgo/size: Fast conversion between file size and string (github.com)

Địa chỉ tài liệu: dstgo/size: Fast conversion between file size and string (github.com)

Cài đặt

$ go get github.com/dstgo/size

Sử dụng

go
const (
  B  Size = 1
  KB      = B * 1024
  MB      = KB * 1024
  GB      = MB * 1024
  TB      = GB * 1024
  PB      = TB * 1024
)
go
type SizeMeta struct {
  Data float64
  Unit Size
}

Thư viện này sử dụng khá đơn giản, chỉ có hai hàm được công khai

go
func ParseSize(str string) SizeMeta

ParseSize chuyển đổi chuỗi thành một cấu trúc SizeMeta, lưu trữ kích thước dữ liệu và đơn vị

go
func ParseTargetSize(str string, size Size) SizeMeta

ParseTargetSize chuyển đổi chuỗi thành SizeMeta với kích thước chỉ định

Ví dụ như sau:

go
package main

import (
  "fmt"
  "github.com/dstgo/size"
)

func main() {
  parseSize := size.ParseSize("1.2MB")
  fmt.Printf("%+v\n", parseSize)
  fmt.Printf("%+v\n", parseSize.Round(1))

  parseSize1 := size.ParseSize("2.3-asdajl")
  fmt.Printf("%+v\n", parseSize1)

  targetSize := size.ParseTargetSize("2.65MB", size.KB)
  fmt.Printf("%+v", targetSize)
  fmt.Printf("%+v", targetSize.String())
}

Sau khi chuyển đổi có thể sử dụng phương thức Round để sửa đổi số chữ số thập phân được giữ lại, cũng có thể sử dụng phương thức String để lấy dạng chuỗi của nó, đầu ra ví dụ như sau

1.20MB
1.2

2713.60KB

Các phương thức hữu ích

go
// Làm tròn số chữ số thập phân
func (s SizeMeta) Round(n int) SizeMeta

// Chuyển đổi thành chuỗi
func (s SizeMeta) String() string

// Chuyển đổi thành bytes
func (s SizeMeta) Bytes() int64

Ví dụ bổ sung

go
package main

import (
    "fmt"
    "github.com/dstgo/size"
)

func main() {
    // Chuyển đổi từ chuỗi
    s1 := size.ParseSize("100MB")
    fmt.Println(s1.String()) // 100.00MB
    
    // Chuyển đổi với đơn vị mục tiêu
    s2 := size.ParseTargetSize("1GB", size.MB)
    fmt.Println(s2.String()) // 1024.00MB
    
    // Làm tròn
    s3 := size.ParseSize("1.56789GB")
    fmt.Println(s3.Round(2).String()) // 1.57GB
    
    // Chuyển đổi thành bytes
    s4 := size.ParseSize("1KB")
    fmt.Println(s4.Bytes()) // 1024
}

Best Practices

  1. Kiểm tra đầu vào: Đảm bảo chuỗi đầu vào có định dạng hợp lệ
  2. Sử dụng Round: Sử dụng Round để làm tròn kết quả cho dễ đọc
  3. Đơn vị phù hợp: Chọn đơn vị phù hợp cho mục đích sử dụng
  4. Xử lý lỗi: Kiểm tra kết quả sau khi parse để đảm bảo chuyển đổi thành công

Kết luận

size là một thư viện nhỏ gọn và tiện lợi cho việc chuyển đổi giữa chuỗi và kích thước file trong Go. Với cú pháp đơn giản và hiệu suất cao, size là lựa chọn tuyệt vời cho việc hiển thị và xử lý kích thước file trong ứng dụng.

Golang by www.golangdev.cn edit