GF框架提供了非常强大的类型转换包gconv,可以实现将常用数据类型转换为指定的数据类型,对常用基本数据类型之间的无缝转换,同时也支持任意类型到struct对象的转换。由于gconv模块内部大量使用了断言而非反射,因此执行的效率非常高。

    使用方式

    1. import "github.com/gogf/gf/util/gconv"

    接口文档

    https://godoc.org/github.com/gogf/gf/util/gconv

    基准测试:

    1. john@john-B85M:~/Workspace/Go/GOPATH/src/github.com/gogf/gf/util/gconv$ go test *.go -bench=".*" -benchmem
    2. goos: linux
    3. goarch: amd64
    4. BenchmarkString-4 20000000 71.8 ns/op 24 B/op 2 allocs/op
    5. BenchmarkInt-4 100000000 22.2 ns/op 8 B/op 1 allocs/op
    6. BenchmarkInt8-4 100000000 24.5 ns/op 8 B/op 1 allocs/op
    7. BenchmarkInt16-4 50000000 23.8 ns/op 8 B/op 1 allocs/op
    8. BenchmarkInt32-4 100000000 24.1 ns/op 8 B/op 1 allocs/op
    9. BenchmarkInt64-4 100000000 21.7 ns/op 8 B/op 1 allocs/op
    10. BenchmarkUint-4 100000000 22.2 ns/op 8 B/op 1 allocs/op
    11. BenchmarkUint8-4 50000000 25.6 ns/op 8 B/op 1 allocs/op
    12. BenchmarkUint16-4 50000000 32.1 ns/op 8 B/op 1 allocs/op
    13. BenchmarkUint32-4 50000000 27.7 ns/op 8 B/op 1 allocs/op
    14. BenchmarkUint64-4 50000000 28.1 ns/op 8 B/op 1 allocs/op
    15. BenchmarkFloat32-4 10000000 155 ns/op 24 B/op 2 allocs/op
    16. BenchmarkFloat64-4 10000000 177 ns/op 24 B/op 2 allocs/op
    17. BenchmarkTime-4 5000000 240 ns/op 72 B/op 4 allocs/op
    18. BenchmarkTimeDuration-4 50000000 26.2 ns/op 8 B/op 1 allocs/op
    19. BenchmarkBytes-4 10000000 149 ns/op 128 B/op 3 allocs/op
    20. BenchmarkStrings-4 10000000 223 ns/op 40 B/op 3 allocs/op
    21. BenchmarkInts-4 20000000 55.0 ns/op 16 B/op 2 allocs/op
    22. BenchmarkFloats-4 10000000 186 ns/op 32 B/op 3 allocs/op
    23. BenchmarkInterfaces-4 20000000 66.6 ns/op 24 B/op 2 allocs/op
    24. PASS
    25. ok command-line-arguments 35.356s