本文内容纲要:
------------------------------------------------------------
//将布尔值转换为字符串true或false
funcFormatBool(bbool)string
//将字符串转换为布尔值
//它接受真值:1,t,T,TRUE,true,True
//它接受假值:0,f,F,FALSE,false,False
//其它任何值都返回一个错误。
funcParseBool(strstring)(bool,error)
------------------------------
//ErrRange表示值超出范围
varErrRange=errors.New("valueoutofrange")
//ErrSyntax表示语法不正确
varErrSyntax=errors.New("invalidsyntax")
//将整数转换为字符串形式。base表示转换进制,取值在2到36之间。
//结果中大于10的数字用小写字母a-z表示。
funcFormatInt(iint64,baseint)string
funcFormatUint(iuint64,baseint)string
//将字符串解析为整数,ParseInt支持正负号,ParseUint不支持正负号。
//base表示进位制(2到36),如果base为0,则根据字符串前缀判断,
//前缀0x表示16进制,前缀0表示8进制,否则是10进制。
//bitSize表示结果的位宽(包括符号位),0表示最大位宽。
funcParseInt(sstring,baseint,bitSizeint)(iint64,errerror)
funcParseUint(sstring,baseint,bitSizeint)(uint64,error)
//将整数转换为十进制字符串形式(即:FormatInt(i,10)的简写)
funcItoa(iint)string
//将字符串转换为十进制整数,即:ParseInt(s,10,0)的简写)
funcAtoi(sstring)(int,error)
------------------------------
//示例
funcmain(){
fmt.Println(strconv.ParseInt("FF",16,0))
//255
fmt.Println(strconv.ParseInt("0xFF",16,0))
//0strconv.ParseInt:parsing"0xFF":invalidsyntax
fmt.Println(strconv.ParseInt("0xFF",0,0))
//255
fmt.Println(strconv.ParseInt("9",10,4))
//7strconv.ParseInt:parsing"9":valueoutofrange
}
------------------------------
//FormatFloat将浮点数f转换为字符串形式
//f:要转换的浮点数
//fmt:格式标记(b、e、E、f、g、G)
//prec:精度(数字部分的长度,不包括指数部分)
//bitSize:指定浮点类型(32:float32、64:float64),结果会据此进行舍入。
//
//格式标记:
//b(-ddddp±ddd,二进制指数)
//e(-d.dddde±dd,十进制指数)
//E(-d.ddddE±dd,十进制指数)
//f(-ddd.dddd,没有指数)
//g(e:大指数,f:其它情况)
//G(E:大指数,f:其它情况)
//
//如果格式标记为e,E和f,则prec表示小数点后的数字位数
//如果格式标记为g,G,则prec表示总的数字位数(整数部分+小数部分)
//参考格式化输入输出中的旗标和精度说明
funcFormatFloat(ffloat64,fmtbyte,prec,bitSizeint)string
//将字符串解析为浮点数,使用IEEE754规范进行舍入。
//bigSize取值有32和64两种,表示转换结果的精度。
//如果有语法错误,则err.Error=ErrSyntax
//如果结果超出范围,则返回±Inf,err.Error=ErrRange
funcParseFloat(sstring,bitSizeint)(float64,error)
------------------------------
//示例
funcmain(){
s:="0.12345678901234567890"
f,err:=strconv.ParseFloat(s,32)
fmt.Println(f,err)//0.12345679104328156
fmt.Println(float32(f),err)//0.12345679
f,err=strconv.ParseFloat(s,64)
fmt.Println(f,err)//0.12345678901234568
}
------------------------------
//判断字符串是否可以不被修改的表示为一个单行的反引号字符串。
//字符串中不能含有控制字符(除了\t)和“反引号”字符,否则返回false
funcCanBackquote(sstring)bool
//示例:找出所有!CanBackquote的字符
funcmain(){
fori:=rune(0);i<utf8.MaxRune;i++{
if!strconv.CanBackquote(string(i)){
fmt.Printf("%q,",i)
}
}
}
//结果如下:
//\x00,\x01,\x02,\x03,\x04,\x05,\x06,\a,\b,\n,\v,\f,\r,\x0e,\x0f,\x10,\x11,\x12,\x13,\x14,\x15,\x16,\x17,\x18,\x19,\x1a,\x1b,\x1c,\x1d,\x1e,\x1f,`,\u007f,\ufeff
------------------------------
//判断r是否为可打印字符
//可否打印并不是你想象的那样,比如空格可以打印,而\t则不能打印
funcIsPrint(rrune)bool
//判断r是否为Unicode定义的图形字符。
funcIsGraphic(rrune)bool
------------------------------
//示例:获取不可打印字符和非图形字符
funcmain(){
varrnp,rng,rpng,rgnp[]rune
constmaxLen=32
fori:=rune(0);i<utf8.MaxRune;i++{
if!strconv.IsPrint(i){//不可打印
iflen(rnp)<maxLen{
rnp=append(rnp,i)
}
ifstrconv.IsGraphic(i)&&len(rgnp)<maxLen{//图形字符
rgnp=append(rgnp,i)
}
}
if!strconv.IsGraphic(i){//非图形字符
iflen(rng)<maxLen{
rng=append(rng,i)
}
ifstrconv.IsPrint(i)&&len(rpng)<maxLen{//可打印
rpng=append(rpng,i)
}
}
}
fmt.Printf("不可打印字符:%q\n",rnp)
fmt.Printf("非图形字符:%q\n",rng)
fmt.Printf("不可打印图形字符:%q\n",rgnp)
fmt.Printf("可打印非图形字符:%q\n",rpng)
}
//不可打印字符:[\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]
//非图形字符:[\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]
//不可打印图形字符:[\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]
//可打印非图形字符:[]
------------------------------
//将s转换为双引号字符串
funcQuote(sstring)string
//功能同上,非ASCII字符和不可打印字符会被转义
funcQuoteToASCII(sstring)string
//功能同上,非图形字符会被转义
funcQuoteToGraphic(sstring)string
------------------------------
//示例
funcmain(){
s:="Hello\t世界!\n"
fmt.Println(s)//Hello 世界!(换行)
fmt.Println(strconv.Quote(s))//"Hello\t世界!\n"
fmt.Println(strconv.QuoteToASCII(s))//"Hello\t\u4e16\u754c\uff01\n"
fmt.Println(strconv.QuoteToGraphic(s))//"Hello\t世界!\n"
}
------------------------------
//将r转换为单引号字符
funcQuoteRune(rrune)string
//功能同上,非ASCII字符和不可打印字符会被转义
funcQuoteRuneToASCII(rrune)string
//功能同上,非图形字符会被转义
funcQuoteRuneToGraphic(rrune)string
------------------------------
//Unquote将“带引号的字符串”s转换为常规的字符串(不带引号和转义字符)
//s可以是“单引号”、“双引号”或“反引号”引起来的字符串(包括引号本身)
//如果s是单引号引起来的字符串,则返回该该字符串代表的字符
funcUnquote(sstring)(string,error)
//UnquoteChar将带引号字符串(不包含首尾的引号)中的第一个字符“取消转义”并解码
//
//s:带引号字符串(不包含首尾的引号)
//quote:字符串使用的“引号符”(用于对字符串中的引号符“取消转义”)
//
//value:解码后的字符
//multibyte:value是否为多字节字符
//tail:字符串s解码后的剩余部分
//error:返回s中是否存在语法错误
//
//参数quote为“引号符”
//如果设置为单引号,则s中允许出现\、"字符,不允许出现单独的字符
//如果设置为双引号,则s中允许出现\"、字符,不允许出现单独的"字符
//如果设置为0,则不允许出现\或\"字符,但可以出现单独的或"字符
funcUnquoteChar(sstring,quotebyte)(valuerune,multibytebool,tailstring,errerror)
------------------------------
//示例
funcmain(){
s1:="`Hello 世界!`"//解析反引号字符串
s2:=`"Hello\t\u4e16\u754c\uff01"`//解析双引号字符串
fmt.Println(strconv.Unquote(s1))//Hello 世界!<nil>
fmt.Println(strconv.Unquote(s2))//Hello 世界!<nil>
fmt.Println()
fmt.Println(strconv.UnquoteChar(`\u4e16\u754c\uff01`,0))
//19990true\u754c\uff01<nil>
fmt.Println(strconv.UnquoteChar(`\"abc\"`,"))
//34falseabc\"<nil>
}
------------------------------
//将各种类型转换为字符串后追加到dst尾部。
funcAppendInt(dst[]byte,iint64,baseint)[]byte
funcAppendUint(dst[]byte,iuint64,baseint)[]byte
funcAppendFloat(dst[]byte,ffloat64,fmtbyte,prec,bitSizeint)[]byte
funcAppendBool(dst[]byte,bbool)[]byte
//将各种类型转换为带引号字符串后追加到dst尾部。
funcAppendQuote(dst[]byte,sstring)[]byte
funcAppendQuoteToASCII(dst[]byte,sstring)[]byte
funcAppendQuoteToGraphic(dst[]byte,sstring)[]byte
funcAppendQuoteRune(dst[]byte,rrune)[]byte
funcAppendQuoteRuneToASCII(dst[]byte,rrune)[]byte
funcAppendQuoteRuneToGraphic(dst[]byte,rrune)[]byte
------------------------------------------------------------
本文内容总结:
原文链接:https://www.cnblogs.com/golove/p/3262925.html