Golang 笔记-基本数据类型转换

栏目: Go · 发布时间: 5年前

内容简介:Go 在不同类型的变量之间赋值时需要显示转换,即 Go 语言中数据类型不能自动转换。注意事项:示例:

Go 在不同类型的变量之间赋值时需要显示转换,即 Go 语言中数据类型不能自动转换。

T(v) // 将值v转换为类型T

注意事项:

  • 数据类型转换可以从表示范围小—>表示范围大,也可以范围大到范围小。
  • 范围大到范围小的转换时,可能会出现结果溢出,但是不会报错。因此转换时,需要考虑范围。

示例:

package main
import "fmt"

func main() {
	var i = 1000
	i64 := int64(i)
	fmt.Printf("%T %d\n", i64, i64)
	f := float64(i)
	fmt.Printf("%T %f\n", f, f)
	i8 := int8(i)
	fmt.Printf("%T %d\n", i8, i8)
}

结果:

int64 1000
float64 1000.000000
int8 -24

基本数据类型转 String

fmt.Sprintf

格式化函数 Sprintf 根据 format 参数生成格式化的字符串并返回该字符串:

func Sprintf(formatstring, a ...interface{})string
%

示例:

package main
import "fmt"

func main() {
	// 整型转字符串
	var i = 10
	iTos := fmt.Sprintf("%v", i)
	fmt.Printf("%T, %q\n", iTos, iTos)

	// 浮点型转字符串
	var f = 23.23
	fTos := fmt.Sprintf("%v", f)
	fmt.Printf("%T, %q\n", fTos, fTos)

	// 字节型转字符串
	var c byte = 'a'
	cTos := fmt.Sprintf("%v", c)
	fmt.Printf("%T, %q\n", cTos, cTos)

	// 布尔型转字符串
	var b bool = true
	bTos := fmt.Sprintf("%v", b)
	fmt.Printf("%T, %q\n", bTos, bTos)
}

结果:

string, "10"
string, "23.23"
string, "97"
string, "true"

strconv

使用 strconv 包中的函数:

  • 整型转字符串
func FormatInt(iint64, baseint)string
func Itoa(iint) string	// FormatInt的缩写
func FormatUint(iuint64, baseint) string

返回 ibase 进制的字符串表示。 base 必须在 2 到 36 之间,结果中会使用小写字母 'a''z' 表示大于 10 的数字。

  • 浮点型转字符串
func FormatFloat(ffloat64, fmtbyte, prec, bitSizeint)string

函数将浮点数表示为字符串并返回。 bitSize 表示 f 的来源类型(32:float32、64:float64),会据此进行舍入。 fmt 表示格式: 'f'(-ddd.dddd)'b'(-ddddp±ddd,指数为二进制)'e'(-d.dddde±dd,十进制指数)'E'(-d.ddddE±dd,十进制指数)'g'(指数很大时用'e'格式,否则'f'格式)'G'(指数很大时用'E'格式,否则'f'格式)prec 控制精度(排除指数部分):对 'f'、'e'、'E' ,它表示小数点后的数字个数;对 'g'、'G' ,它控制总的数字个数。如果 prec 为 -1,则代表使用最少数量的、但又必需的数字来表示 f

  • 布尔型转字符串
func FormatBool(bbool)string

示例:

package main
import "strconv"

func main() {
	// 整型转字符串
	var i = 10	// 默认类型为int
	iTos := strconv.FormatInt(int64(i), 10)	// 注意,传入参数的类型必须匹配
	fmt.Printf("%T, %q\n", iTos, iTos)

	// 浮点型转字符串
	var f = 23.23	// 默认类型为float64
	fTos := strconv.FormatFloat(f, 'f', 4, 64)
	fmt.Printf("%T, %q\n", fTos, fTos)

	// 布尔型转字符串
	var b = true
	bTos := strconv.FormatBool(b)
	fmt.Printf("%T, %q\n", bTos, bTos)
}

结果:

string, "10"
string, "23.2300"
string, "true"

String 转基本数据类型

strconv

使用 strconv 包中的函数:

  • 字符串转整型
func ParseInt(sstring, baseint, bitSizeint)(iint64, err error)
func ParseUint(sstring, baseint, bitSizeint) (nuint64, err error)
func Atoi(sstring) (iint, err error)

ParseInt 返回字符串表示的整数值,接受正负号。 ParseUint 则不接受正负号,用于无符号整型。 base 指定进制(2 到 36),如果 base 为 0,则会从字符串前置判断,”0x” 是 16 进制,”0”是 8 进制,否则是 10 进制; bitSize 指定结果必须能无溢出赋值的整数类型, 0、8、16、32、64 分别代表 int、int8、int16、int32、int64 ;返回的 err 是 *NumErr 类型的,如果语法有误,err.Error = ErrSyntax;如果结果超出类型范围err.Error = ErrRange。

  • 字符串转浮点型
func ParseFloat(sstring, bitSizeint)(ffloat64, err error)

ParseFloat 解析一个表示浮点数的字符串并返回其值。 bitSize 指定转换结果的类型,32 是 float32 (返回值可以不改变精确值的赋值给 float32),64 是 float64 ;返回值 err 是 *NumErr 类型的,语法有误的,err.Error=ErrSyntax;结果超出表示范围的,返回值 f 为 ±Inf,err.Error= ErrRange。

  • 字符串转布尔型
func ParseBool(strstring)(valuebool, err error)

ParseBool 返回字符串表示的 bool 值。它接受 1、0、t、f、T、F、true、false、True、False、TRUE、FALSE ,否则返回错误。

示例:

package main
import "strconv"

func main() {
	// 字符串转整型
	var is = "100"
	sToi, _ := strconv.ParseInt(is, 10, 32)
	fmt.Printf("%T, %d\n", sToi, sToi)

	// 字符串转浮点型
	var fs = "23.23"
	sTof, _ := strconv.ParseFloat(fs, 32)
	fmt.Printf("%T, %f\n", sTof, sTof)

	// 字符串转布尔型
	var bs = "true"
	sTob, _ := strconv.ParseBool(bs)
	fmt.Printf("%T, %t\n", sTob, sTob)
}

结果:

int64, 100
float64, 23.230000
bool, true

以上所述就是小编给大家介绍的《Golang 笔记-基本数据类型转换》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript入门经典

JavaScript入门经典

Paul Wilton、Jeremy McPeak / 施宏斌 / 清华大学出版社 / 2009-2 / 98.00元

《Java Script入门经典(第3版)》首先介绍了J avaScript的基本语法,并介绍了如何发挥JavaScript中对象的威力。《Java Script入门经典(第3版)》还介绍了如何操纵最新版本浏览器所提供的BOM对象。在《Java Script入门经典(第3版)》的高级主题中,将介绍如何使用cookie,以及如何应用DHTML技术使Web页面焕发动感和活力。另外,《Java Scri......一起来看看 《JavaScript入门经典》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换