golang语言strconv包使用例子

golang strconv包提供了字符串和基本数据类型之间的转换操作。
1.默认提供了1个常量IntSize和两个变量ErrRange和ErrSyntax。

package main
 
import (
 "strconv"
 "fmt"
)
 
func main()  {
 //IntSize是int或uint类型的字位数。
 fmt.Println(strconv.IntSize)
 //ErrRange表示超出目标类型表示范围。[var ErrRange = errors.New("value out of range")]
 fmt.Println(strconv.ErrRange)
 //ErrSyntax表示不符合目标类型语法。[var ErrSyntax = errors.New("invalid syntax")]
 fmt.Println(strconv.ErrSyntax)
}

2.字符串和整型相互转换

实现函数原型:

//字符串转换为整数
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
func Atoi(s string) (i int, err error)
 
//整数转换为字符串
func FormatUint(i uint64, base int) string  // 无符号整型转字符串
func FormatInt(i int64, base int) string    // 有符号整型转字符串
func Itoa(i int) string

示例如下:

package main
 
import (
 "strconv"
 "fmt"
)
 
func main()  {
 //字符串转整型
 v32 := "-354634382"
 if s, err := strconv.ParseInt(v32, 10, 32); err == nil {
  fmt.Println(s) //-354634382
 }
 if s, err := strconv.Atoi(v32); err == nil {
  fmt.Println(s) //-354634382
 }
 
 //整型转字符串
 v := int64(-42)
 fmt.Println(strconv.FormatInt(v, 10)) // "-42"
 i := 10
 fmt.Println(strconv.Itoa(i)) // "10"
}

参数说明:

参数 base 代表字符串按照给定的进制进行解释。一般的,base 的取值为 2~36,如果 base 的值为 0,则会根据字符串的前缀来确定 base 的值:"0x" 表示 16 进制; "0" 表示 8 进制;否则就是 10 进制。
参数 bitSize 表示的是整数取值范围,或者说整数的具体类型。取值 0、8、16、32 和 64 分别代表 int、int8、int16、int32 和 int64。

3.字符串和布尔值相互转换

实现函数原型:
// ParseBool 将字符串转换为布尔值
// 它接受真值:1, t, T, TRUE, true, True
// 它接受假值:0, f, F, FALSE, false, False.
// 其它任何值都返回一个错误
func ParseBool(str string) (value bool, err error)
 
// FormatBool 将布尔值转换为字符串 "true" 或 "false"
func FormatBool(b bool) string
 
// AppendBool 将布尔值 b 转换为字符串 "true" 或 "false"
// 然后将结果追加到 dst 的尾部,返回追加后的 []byte
func AppendBool(dst []byte, b bool) []byte

示例如下:

package main
 
import (
 "strconv"
 "fmt"
)
 
func main()  {
 if b, err := strconv.ParseBool("T"); err == nil {
  fmt.Println(b) //true
 }
 
 fmt.Println(strconv.FormatBool(0 > 1)) // "false"
 
 rst := make([]byte, 0)
 rst = strconv.AppendBool(rst, 0 < 1)
 fmt.Printf("%s\n", rst) // "true"
}

4.字符串和浮点数相互转换

实现函数原型:

// ParseFloat 将字符串转换为浮点数
// s:要转换的字符串
// bitSize:指定浮点类型(32:float32、64:float64)
// 如果 s 是合法的格式,而且接近一个浮点值,
// 则返回浮点数的四舍五入值(依据 IEEE754 的四舍五入标准)
// 如果 s 不是合法的格式,则返回“语法错误”
// 如果转换结果超出 bitSize 范围,则返回“超出范围”
func ParseFloat(s string, bitSize int) (f float64, err error)
 
// 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
 
// AppendFloat 将浮点数 f 转换为字符串值,并将转换结果追加到 dst 的尾部
// 返回追加后的 []byte
func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte

示例如下:

package main
 
import (
 "strconv"
 "fmt"
)
 
func main()  {
 s := "0.1234567891122334455"
 if f, err := strconv.ParseFloat(s, 32); err == nil {
  fmt.Println(f) //12345679104328156
 }
 if f, err := strconv.ParseFloat(s, 64); err == nil {
  fmt.Println(f) //0.12345678911223344
 }
 
 f := 0.12345678911223344
 fmt.Println(strconv.FormatFloat(f, 'E', 5, 32)) //1.23457E-01
 
 b32 := []byte("float32:")
 b32 = strconv.AppendFloat(b32, 3.1415926535, 'E', -1, 32)
 fmt.Println(string(b32)) //float32:3.1415927E+00
}

时间: 2024-08-28 05:33:37

golang语言strconv包使用例子的相关文章

go语言编程-Golang的odbc包install出错

问题描述 Golang的odbc包install出错 用Go程序写代码,用到odbc包,这个包不在标准库里,所以到https://github.com/weigj/go-odbc这里下载了一个包.然而在go install的过程中出现了下面的错误: 似乎这是odbc包里本身就有的错误,但是这个包应该已经创建过几年了,很多人用过,从来没有人出现过这种错误,百度也找不到答案,这是为什么呢? PS:程序运行的时候也出现了同样的报错信息 解决方案 首先要看这个包对应的os,然后就是包是否有依赖,还有go

golang中strconv.ParseInt函数用法示例_Golang

本文实例讲述了golang中strconv.ParseInt函数用法.分享给大家供大家参考,具体如下: golang strconv.ParseInt 是将字符串转换为数字的函数,功能灰常之强大. 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制 参数3 返回结果的bit大小 也就是int8 int16 int32 int64 func ParseInt(s string, base int, bitSize int) (i int64, err erro

使用Sublime 2 配置GoLang语言

使用Sublime 2 配置GoLang语言 一.准备工作:    1.下载Go语言包: https://code.google.com/p/go/downloads/list    2.下载Git: https://code.google.com/p/msysgit/downloads/list    3.下载Sublime 2:http://www.sublimetext.com/2 二.安装:   1.安装go(一路next),他会自动帮你配置环境变量   2.安装sublime(一路ne

一个用R语言进行聚类分析的例子

在网上(http://www.rdatamining.com/ )找到了一个用R语言进行聚类分析的例子, 在整个例子中做了一些中文解释说明. 数据集用的是iris. 第一步:对数据集进行初步统计分析 检查数据的维度 > dim(iris) [1] 150   5 显示数据集中的列名 > names(iris) [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Wi

Windows下C语言的Socket编程例子(TCP和UDP)

原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: #include "stdafx.h" #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") int main(int argc, char* ar

数组-求关于C语言的五子棋程序例子

问题描述 求关于C语言的五子棋程序例子 实现一个五子棋游戏程序编制,棋盘是15X15的方格,棋子放交叉点 , 解决方案 可以 Google 到一些有用的资源的 C语言设计一个人机对战的五子棋程序 VC实现五子棋游戏的一个算法示例 解决方案二: 这里有几个现成的http://download.csdn.net/download/q511249662/3271854http://down.51cto.com/data/68237http://download.csdn.net/detail/enjo

go语言里包的用法实例_Golang

本文实例讲述了go语言里包的用法.分享给大家供大家参考.具体分析如下: 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 这个程序使用并导入了包 "fmt" 和 "math". 按照惯例,包名与导入路径的最后一个目录一致. 复制代码 代码如下: package main import (  "fmt"  "math" ) func main() {  fmt.Println("Happy",

新手怎么思考c语言书上的例子

问题描述 新手怎么思考c语言书上的例子 c语言新手一枚,自学中,现在很不熟练. 面对书上稍微复杂一点的例子, 脑子里就一团浆糊.所以昨天开始就试着在敲例子前画程序流程图.然后再敲,请问这种方法是对的吗?如果不是或者有什么要补充的麻烦给我讲一下,谢谢啦! 解决方案 最好找一个懂程序的人教你下.看下人家是怎么写程序的. 我见过一些初学者遇到的困难,是因为他们完全是根据书本上写好的程序在模仿.但是这有一个问题,就是看不到程序从无到有的过程. 好比根据烧好的菜去研究烹饪或者根据画好的画去学习素描,这都是

编程c语言-C语言大型程序一个例子为什么不能运行

问题描述 C语言大型程序一个例子为什么不能运行 我编写了两张图里四个文件,一个.h和三个.c,然后按照给出的那个命令运行,却出现一堆错误和warning,怎么回事?一般大点的程序按这种编写方法怎么链接和用什么命令运行? 解决方案 warning不影响运行,没有error就行 解决方案二: 有时候编译器的版本不一样也会出错的,也有课能本上给出的代码是伪代码 解决方案三: C语言实现的一个程序只能运行一次,不能重复运行 解决方案四: 这是用gcc运行是的错误 解决方案五: 要用gcc -o命令先编译