Golang学习

Stella981
• 阅读 239

// 将布尔值转换为字符串 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 表示值超出范围 var ErrRange = errors.New("value out of range")

// ErrSyntax 表示语法不正确 var ErrSyntax = errors.New("invalid syntax")

// 将整数转换为字符串形式。base 表示转换进制,取值在 2 到 36 之间。 // 结果中大于 10 的数字用小写字母 a - z 表示。 func FormatInt(i int64, base int) string func FormatUint(i uint64, base int) string

// 将字符串解析为整数,ParseInt 支持正负号,ParseUint 不支持正负号。 // base 表示进位制(2 到 36),如果 base 为 0,则根据字符串前缀判断, // 前缀 0x 表示 16 进制,前缀 0 表示 8 进制,否则是 10 进制。 // bitSize 表示结果的位宽(包括符号位),0 表示最大位宽。 func ParseInt(s string, base int, bitSize int) (i int64, err error) func ParseUint(s string, base int, bitSize int) (uint64, error)

// 将整数转换为十进制字符串形式(即:FormatInt(i, 10) 的简写) func Itoa(i int) string

// 将字符串转换为十进制整数,即:ParseInt(s, 10, 0) 的简写) func Atoi(s string) (int, error)


// 示例 func main() { fmt.Println(strconv.ParseInt("FF", 16, 0)) // 255 fmt.Println(strconv.ParseInt("0xFF", 16, 0)) // 0 strconv.ParseInt: parsing "0xFF": invalid syntax fmt.Println(strconv.ParseInt("0xFF", 0, 0)) // 255 fmt.Println(strconv.ParseInt("9", 10, 4)) // 7 strconv.ParseInt: parsing "9": value out of range }


// 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 表示总的数字位数(整数部分+小数部分) // 参考格式化输入输出中的旗标和精度说明 func FormatFloat(f float64, fmt byte, prec, bitSize int) string

// 将字符串解析为浮点数,使用 IEEE754 规范进行舍入。 // bigSize 取值有 32 和 64 两种,表示转换结果的精度。 // 如果有语法错误,则 err.Error = ErrSyntax // 如果结果超出范围,则返回 ±Inf,err.Error = ErrRange func ParseFloat(s string, bitSize int) (float64, error)


// 示例 func main() { 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 func CanBackquote(s string) bool

// 示例:找出所有 !CanBackquote 的字符 func main() { for i := 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则不能打印 func IsPrint(r rune) bool

// 判断 r 是否为 Unicode 定义的图形字符。 func IsGraphic(r rune) bool


// 示例:获取不可打印字符和非图形字符 func main() { var rnp, rng, rpng, rgnp []rune const maxLen = 32 for i := rune(0); i < utf8.MaxRune; i++ { if !strconv.IsPrint(i) { // 不可打印 if len(rnp) < maxLen { rnp = append(rnp, i) } if strconv.IsGraphic(i) && len(rgnp) < maxLen { // 图形字符 rgnp = append(rgnp, i) } } if !strconv.IsGraphic(i) { // 非图形字符 if len(rng) < maxLen { rng = append(rng, i) } if strconv.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 转换为双引号字符串 func Quote(s string) string

// 功能同上,非 ASCII 字符和不可打印字符会被转义 func QuoteToASCII(s string) string

// 功能同上,非图形字符会被转义 func QuoteToGraphic(s string) string


// 示例 func main() { 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 转换为单引号字符 func QuoteRune(r rune) string

// 功能同上,非 ASCII 字符和不可打印字符会被转义 func QuoteRuneToASCII(r rune) string

// 功能同上,非图形字符会被转义 func QuoteRuneToGraphic(r rune) string


// Unquote 将“带引号的字符串” s 转换为常规的字符串(不带引号和转义字符) // s 可以是“单引号”、“双引号”或“反引号”引起来的字符串(包括引号本身) // 如果 s 是单引号引起来的字符串,则返回该该字符串代表的字符 func Unquote(s string) (string, error)

// UnquoteChar 将带引号字符串(不包含首尾的引号)中的第一个字符“取消转义”并解码 // // s  :带引号字符串(不包含首尾的引号) // quote:字符串使用的“引号符”(用于对字符串中的引号符“取消转义”) // // value  :解码后的字符 // multibyte:value 是否为多字节字符 // tail  :字符串 s 解码后的剩余部分 // error  :返回 s 中是否存在语法错误 // // 参数 quote 为“引号符” // 如果设置为单引号,则 s 中允许出现 \'、" 字符,不允许出现单独的 ' 字符 // 如果设置为双引号,则 s 中允许出现 \"、' 字符,不允许出现单独的 " 字符 // 如果设置为 0,则不允许出现 \' 或 \" 字符,但可以出现单独的 ' 或 " 字符 func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)


// 示例 func main() { s1 := "`Hello 世界!`"        // 解析反引号字符串 s2 := `"Hello\t\u4e16\u754c\uff01"` // 解析双引号字符串 fmt.Println(strconv.Unquote(s1))  // Hello 世界! fmt.Println(strconv.Unquote(s2))  // Hello 世界!

fmt.Println()
fmt.Println(strconv.UnquoteChar(\`\\u4e16\\u754c\\uff01\`, 0))
// 19990 true \\u754c\\uff01 <nil>
fmt.Println(strconv.UnquoteChar(\`\\"abc\\"\`, '"'))
// 34 false abc\\" <nil>

}


// 将各种类型转换为字符串后追加到 dst 尾部。 func AppendInt(dst []byte, i int64, base int) []byte func AppendUint(dst []byte, i uint64, base int) []byte func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte func AppendBool(dst []byte, b bool) []byte

// 将各种类型转换为带引号字符串后追加到 dst 尾部。 func AppendQuote(dst []byte, s string) []byte func AppendQuoteToASCII(dst []byte, s string) []byte func AppendQuoteToGraphic(dst []byte, s string) []byte func AppendQuoteRune(dst []byte, r rune) []byte func AppendQuoteRuneToASCII(dst []byte, r rune) []byte func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte


点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
Mongodb之数据类型
一.MongoDB的数据类型 -------------- Object  ID :Documents 自生成的 \_id String: 字符串,必须是utf-8 Boolean:布尔值,true 或者false (Python中 True False 首字母大写) Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我
Wesley13 Wesley13
1年前
MongoDB 数据类型
### 一.MongoDB 之 数据类型 Object  ID :Documents 自动生成的 \_id,插入数据时候会生成 \_id,唯一字段 String: 字符串,必须是utf-8 Boolean:布尔值,true 或者false Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32) Doub
Stella981 Stella981
1年前
Python学习之路
三元运算 变量 = 条件返回True的结果 if 条件 else 条件返回False ,用于简单 import time time.time() 1970年至今多少秒 time.sleep()暂时休眠 ### 装饰器形成过程 ![](https://oscimg.oschina.net/oscnet/3b8d3477779a33f0ffcefa35
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue