golang strconv 包

strconv 包括 四 类函数

1.Append 类,例如 AppendBool(dst []byte, b bool)[]byte,将值转化后添加到[]byte的末尾

2.Format 类,例如FormatBool(b bool) string,将bool  float int uint 类型的转换为string,FormatInt的缩写为Itoa

3.Parse 类,例如ParseBool(str string)(value bool, err error) 将字符串转换为 bool float int uint类型的值,err指定是否转换成功,ParseInt的缩写是Atoi

4.Quote 类,对字符串的 双引号 单引号 反单引号 的操作

//main.go

package main

import (
    "fmt"
    "strconv"
)

func main() {

    dst := make([]byte, 2)
    fmt.Println(dst) //[0 0]
    //----------AppendBool
    //AppendBool将 布尔值转换为字符串,然后添加到dst的尾部
    //内部是实现:return append(dst, "true"...)
    rst := strconv.AppendBool(dst, true)
    fmt.Println(rst, string(rst)) //[0 0 116 114 117 101]   true
    rst = strconv.AppendBool(dst, false)
    fmt.Println(rst, string(rst)) //[0 0 102 97 108 115 101]   false
    //----------AppendBool
    f := 12345.123456789987654321
    dst = make([]byte, 2)
    fmt.Println(dst) //[0 0]
    //bitsize 参数只能是32或者64
    //使用math.Float64bits/math.Float32bits 函数转换到[]byte
    rst = strconv.AppendFloat(dst, f, ‘f‘, 5, 32) //[0 0 49 50 51 52 53 46 49 50 51 48 53]12345.12305
    fmt.Println(rst, string(rst))
    rst = strconv.AppendFloat(dst, f, ‘f‘, 5, 64) //[0 0 49 50 51 52 53 46 49 50 51 52 54]12345.12346
    fmt.Println(rst, string(rst))
    //----------AppendInt
    i := int64(128)
    dst = make([]byte, 2)
    fmt.Println(dst)                   //[0 0]
    rst = strconv.AppendInt(dst, i, 2) //[0 0 49 48 48 48 48 48 48 48]10000000
    fmt.Println(rst, string(rst))
    rst = strconv.AppendInt(dst, i, 8) //[0 0 50 48 48]200
    fmt.Println(rst, string(rst))
    rst = strconv.AppendInt(dst, i, 10) //[0 0 49 50 56]128
    fmt.Println(rst, string(rst))
    rst = strconv.AppendInt(dst, i, 16) //[0 0 49 50 56]128
    fmt.Println(rst, string(rst))       //[0 0 56 48]80
    //----------AppendQuote--AppendQuoteToASCII
    s := "你好世界"
    dst = make([]byte, 2)
    fmt.Println(dst)                  //[0 0]
    rst = strconv.AppendQuote(dst, s) //[0 0 34 104 101 108 108 111 32 119 111 114 108 100 34]"你好世界"
    fmt.Println(rst, string(rst))
    rst = strconv.AppendQuoteToASCII(dst, s) //[0 0 34 104 101 108 108 111 32 119 111 114 108 100 34]"\u4f60\u597d\u4e16\u754c"
    fmt.Println(rst, string(rst))
    //-----------AppendQuoteRune--AppendQuoteRuneToASCII
    r := ‘好‘
    rst = strconv.AppendQuoteRune(dst, r) //[0 0 39 104 39]‘好‘
    fmt.Println(rst, string(rst))
    rst = strconv.AppendQuoteRuneToASCII(dst, r) //[0 0 39 104 39]‘\u597d‘
    fmt.Println(rst, string(rst))
    //----------AppendUint
    rst = strconv.AppendUint(dst, 4096, 16) //[0 0 49 48 48 48]1000
    fmt.Println(rst, string(rst))
    //----------Atoi
    //我的机器是64为的9,223,372,036,854,775,807 为int64的最大值点
    //当转换的值大于这个值的时候,会有一个err 并且val 被复制成最大值
    val, err := strconv.Atoi("9223372036854775809")
    //9223372036854775807 --- strconv.ParseInt: parsing "9223372036854775809": value out of range
    fmt.Println(val, "---", err)
    //----------CanBackquote
    s1 := "c:\\windows\n"
    ss := strconv.CanBackquote(s1)
    fmt.Println(ss) //false 其害还没明白他到底是做什么用的,知道朋友回一下,谢谢:)
    //----------FormatBool
    fmt.Println(strconv.FormatBool(1 < 2)) //ture
    //----------FormatFloat
    fmt.Println(strconv.FormatFloat(123.1233456, ‘f‘, 6, 32)) //123.123344
    //----------FormarInt--FormatUint
    fmt.Println(strconv.FormatInt(15, 2))  //1111
    fmt.Println(strconv.FormatInt(15, 8))  //17
    fmt.Println(strconv.FormatInt(15, 10)) //15
    //----------IsPrint--是否是可打印字符
    fmt.Println(strconv.IsPrint(‘a‘))  //true
    fmt.Println(strconv.IsPrint(‘\t‘)) //false
    //----------Itoa--shorthand for  FormatInt(i,10)
    fmt.Println(strconv.Itoa(123)) //123
    //----------ParseBool
    //"1", "t", "T", "true", "TRUE", "True":
    //"0", "f", "F", "false", "FALSE", "False":
    bb, err := strconv.ParseBool("f")
    fmt.Println(bb, err)
    //----------ParseFloat
    //func ParseFloat(s string, bitSize int) (f float64, err error)
    ff, err := strconv.ParseFloat("123.1234546789987654", 64)
    fmt.Println(ff, err)
    //----------ParseInt--ParseUint
    ii, err := strconv.ParseInt("A", 16, 32)
    fmt.Println(ii, err)
    //----------Quote--QuoteToASCII
    fmt.Println(strconv.Quote("hello world"))
    fmt.Println(strconv.QuoteToASCII("你好世界world"))
    //----------QuoteRune--QuoteRuneToASCII
    fmt.Println(strconv.QuoteRune(‘好‘))
    fmt.Println(strconv.QuoteRuneToASCII(‘好‘))
    //----------Unquote---UnquoteChar
    us, err := strconv.Unquote("\"sssssss\"")
    fmt.Println("\"sssssss\"")
    fmt.Println(us, err)
    us, err = strconv.Unquote(`‘sssssss‘`)
    fmt.Println("‘sssssss‘")
    fmt.Println(us, err)

}
时间: 2024-10-18 03:50:09

golang strconv 包的相关文章

Golang strconv包使用

      // atob.go         ------------------------------------------------------------         // ParseBool 将字符串转换为布尔值         // 它接受真值:1, t, T, TRUE, true, True         // 它接受假值:0, f, F, FALSE, false, False.         // 其它任何值都返回一个错误         func Parse

Go语言库之strconv包(转载自--http://blog.csdn.net/alvine008/article/details/51283189)

golang strconv.ParseInt 是将字符串转换为数字的函数 func ParseInt(s string, base int, bitSize int) (i int64, err error) 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制 参数3 返回结果的bit大小 也就是int8 int16 int32 int64 代码: package main import "fmt" import "strconv&qu

Go基础系列:数据类型转换(strconv包)

Go不会对数据进行隐式的类型转换,只能手动去执行转换操作. 简单的转换操作 转换数据类型的方式很简单. valueOfTypeB = typeB(valueOfTypeA) 例如: // 浮点数 a := 5.0 // 转换为int类型 b := int(a) Go允许在底层结构相同的两个类型之间互转.例如: // IT类型的底层是int类型 type IT int // a的类型为IT,底层是int var a IT = 5 // 将a(IT)转换为int,b现在是int类型 b := int

Golang fmt包使用小技巧

h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; text-align: justify; page-break-inside: avoid; orphans: 0; widows: 0 } h1.western { font-family: "Times New Roman", serif; font-size: 22pt } h1.cjk

Go语言的字符串转换的处理一之strconv包

// code_028_strings_strconv project main.go package main import ( "fmt" "strconv" ) //strings和strconv包中的函数--->>> //strings包,字符处理:Contains,Join,Index,Repeat,Replace,Split,Trim, Fields //strconv包,字符转换: //1) Append添加字符串元素:AppendI

3.Golang的包导入

1.golang的源码文件可以随意命名,但是属于同一个包的源文件必须声明 package base 2.golang的包引入规则 import ( "fmt" #系统包直接写名字 "github.com/user/stringutil" #其余包 写 src 下的绝对路径 ) go help importpath A few common code hosting sites have special syntax: Bitbucket (Git, Mercuria

Golang Context 包详解

Golang Context 包详解 0. 引言 在 Go 语言编写的服务器程序中,服务器通常要为每个 HTTP 请求创建一个 goroutine 以并发地处理业务.同时,这个 goroutine 也可能会创建更多的 goroutine 来访问数据库或者 RPC 服务. 当这个请求超时或者被终止的时候,需要优雅地退出所有衍生的 goroutine,并释放资源.因此,我们需要一种机制来通知衍生 goroutine 请求已被取消. 比如以下例子,sleepRandom_1 的结束就无法通知到 sle

简析 Golang IO 包

简析 Golang IO 包 io 包提供了 I/O 原语(primitives)的基本接口.io 包中定义了四个最基本接口 Reader.Writer.Closer.Seeker 用于表示二进制流的读.写.关闭和寻址操作.这些原语和接口是对底层操作的封装,因此如没有特殊说明,这些原语和接口都不能被视为线程安全的. Reader Reader 接口封装了基本的 Read 方法.Read 读取长度为 len(p) 字节的数据,并写入到 p.返回结果包含读取数据字节数(0 <= n <= len(

Golang学习 - strconv 包--数据类型转换

// 将布尔值转换为字符串 true 或 false func FormatBool(b bool) string // 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False // 其它任何值都返回一个错误. func ParseBool(str string) (bool, error) ------------------------------ // ErrRange 表示值超