美文网首页
strconv 包代码阅读

strconv 包代码阅读

作者: wayyyy | 来源:发表于2022-04-23 17:56 被阅读0次

strconv 包含了一系列的转换函数:

字符串转整型

转整型定义了新的错误类型:

type NumError struct {
    Func string // the failing function (ParseBool, ParseInt, ParseUint, ParseFloat, ParseComplex)
    Num  string // the input
    Err  error  // the reason the conversion failed (e.g. ErrRange, ErrSyntax, etc.)
}

func (e *NumError) Error() string {
    return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + e.Err.Error()
}

func (e *NumError) Unwrap() error { return e.Err }

var ErrSyntax = errors.New("invalid syntax")
func syntaxError(fn, str string) *NumError {
    return &NumError{fn, str, ErrSyntax}
}

var ErrRange = errors.New("value out of range")
func rangeError(fn, str string) *NumError {
    return &NumError{fn, str, ErrRange}
}

func baseError(fn, str string, base int) *NumError {
    return &NumError{fn, str, errors.New("invalid base " + Itoa(base))}
}

func bitSizeError(fn, str string, bitSize int) *NumError {
    return &NumError{fn, str, errors.New("invalid bit size " + Itoa(bitSize))}
}

其他:

const intSize = 32 << (^uint(0) >> 63)
const IntSize = intSize
const maxUint64 = 1<<64 - 1
  • ParseUint
    func ParseUint(s string, base int, bitSize int) (uint64, error) {
        const fnParseUint = "ParseUint"
    
        if s == "" {
            return 0, syntaxError(fnParseUint, s)
        } 
        
        base0 := base == 0
    
        // 查看是什么进制转换,输入"0b", "0o", "0x"
        s0 := s
        switch {
        case 2 <= base && base <= 36:
          // valid base; nothing to do
        case base == 0:
        // Look for octal, hex prefix.
            base = 10
            if s[0] == '0' {
                switch {
                case len(s) >= 3 && lower(s[1]) == 'b':
                    base = 2
                    s = s[2:]
                case len(s) >= 3 && lower(s[1]) == 'o':
                    base = 8
                    s = s[2:]
                case len(s) >= 3 && lower(s[1]) == 'x':
                    base = 16
                    s = s[2:]
                default:
                    base = 8
                    s = s[1:]
                }
            }
        default:
            return 0, baseError(fnParseUint, s0, base)
        }
    
        if bitSize == 0 {
            bitSize = IntSize
        } else if bitSize < 0 || bitSize > 64 {
            return 0, bitSizeError(fnParseUint, s0, bitSize)
        }
    
    }
    
字符串转浮点
字符串转bool
  • 字符串和bool
    func ParseBool(str string) (bool, error) {
        switch str {
        case "1", "t", "T", "true", "TRUE", "True":
            return true, nil
        case "0", "f", "F", "false", "FALSE", "False":
            return false, nil
        }
        return false, syntaxError("ParseBool", str)
    }
    
  • bool 转 字符串
    func FormatBool(b bool) string {
        if b {
            return "true"
        }
        return "false"
    }
    
字符串转复数

TODO

相关文章

  • strconv 包代码阅读

    strconv 包含了一系列的转换函数: 字符串转整型 转整型定义了新的错误类型: 其他: ParseUintfu...

  • Go语言基础之strconv标准库

    Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。 strconv包 strconv包实现了基...

  • Golang-基础包

    math包 strconv包 json包 time包

  • package strconv

    package strconv import "strconv" strconv包实现了基本数据类型和其字符串表示...

  • strconv包

    这个包实现了基本数据之间进行相互转换。一、常量(1)IntSize原型:const IntSize = intSi...

  • go数字和字符串互相转换

    需引入"strconv"包 string到intint,err:=strconv.Atoi(string) str...

  • string

    strings包的使用 strconv包的使用

  • Golang标准库——strconv

    strconv strconv包实现了基本数据类型和其字符串表示的相互转换。 Constants IntSize是...

  • Golang面试之Golang基础

    数据类型 闭包的实现 常用包 fmt time strings strconv bytes bufio flag ...

  • strconv 字符串类型转换

    import "strconv" strconv包实现了基本数据类型和其字符串表示的相互转换。 字符串转换类型包括...

网友评论

      本文标题:strconv 包代码阅读

      本文链接:https://www.haomeiwen.com/subject/swzutrtx.html