Golang 字符串与其他类型互转

发布时间: 2020-11-14 更新时间: 2023-06-07

Golang Golang,类型转换 2.90 K 2 分钟 998

Golang 字符串与其他类型互转

简介

开发过程中,经常遇到字符串与其他类型相互转换。Unknwon 含有许多转换规则,抽取一部分代码学习。

字符串转换代码

/* 字符串与其他类型互转 来源:https://github.com/Unknwon/com */ import ( "fmt" "strconv" ) // Convert string to specify type. type StrTo string func (f StrTo) Exist() bool { return string(f) != string(rune(0x1E)) } func (f StrTo) Uint8() (uint8, error) { v, err := strconv.ParseUint(f.String(), 10, 8) return uint8(v), err } func (f StrTo) Int() (int, error) { v, err := strconv.ParseInt(f.String(), 10, 0) return int(v), err } func (f StrTo) Int64() (int64, error) { v, err := strconv.ParseInt(f.String(), 10, 64) return int64(v), err } func (f StrTo) Float64() (float64, error) { v, err := strconv.ParseFloat(f.String(), 64) return float64(v), err } func (f StrTo) MustUint8() uint8 { v, _ := f.Uint8() return v } func (f StrTo) MustInt() int { v, _ := f.Int() return v } func (f StrTo) MustInt64() int64 { v, _ := f.Int64() return v } func (f StrTo) MustFloat64() float64 { v, _ := f.Float64() return v } func (f StrTo) String() string { if f.Exist() { return string(f) } return "" } // Convert any type to string. func ToStr(value interface{}, args ...int) (s string) { switch v := value.(type) { case bool: s = strconv.FormatBool(v) case float32: s = strconv.FormatFloat(float64(v), 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 32)) case float64: s = strconv.FormatFloat(v, 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 64)) case int: s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10)) case int8: s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10)) case int16: s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10)) case int32: s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10)) case int64: s = strconv.FormatInt(v, argInt(args).Get(0, 10)) case uint: s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10)) case uint8: s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10)) case uint16: s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10)) case uint32: s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10)) case uint64: s = strconv.FormatUint(v, argInt(args).Get(0, 10)) case string: s = v case []byte: s = string(v) default: s = fmt.Sprintf("%v", v) } return s } type argInt []int func (a argInt) Get(i int, args ...int) (r int) { if i >= 0 && i < len(a) { r = a[i] } else if len(args) > 0 { r = args[0] } return }

使用示例

  1. stringint64
string_:= "12345" read :=StrTo(string_).MustInt64()
  1. stringfloat64
string_:= "12345.1246" read :=StrTo(v).MustFloat64()
  1. intstring
read := ToStr(123)
end
如果你觉得还不错的话,请我吃个午饭吧!😍
支付宝
支付宝
微信
微信
目录

Copyright © 2019-2020 qzq版权所有

蜀ICP备19012274号-1 | 管理