前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO语言基础之基础类型转换

GO语言基础之基础类型转换

原创
作者头像
墨紫羽墨
修改2022-12-27 15:28:33
1.8K0
修改2022-12-27 15:28:33
举报
文章被收录于专栏:FutureTesterFutureTester

1、int类型转换为int32

代码语言:go
复制
func intToInt32() {
	var intNum int = 123
	int32Num := int32(intNum)
	fmt.Printf("int32Num type:%T,value: %v\n", int32Num, int32Num)
}

运行结果:

2、int32类型转uint

代码语言:go
复制
func int32ToUint() {
	var int32Num int32 = 456
	uintNum := uint(int32Num)
	fmt.Printf("uintNum type:%T,value: %v\n", uintNum, uintNum)
}

运行结果:

从上面两个例子可以看出Go 语言类型转换基本格式:type_name(expression) 像数值类型之间的转换都可以这样之间转换。

3、int类型转换为string

代码语言:go
复制
func intToString() {
	var intNum int = 789
	str := strconv.Itoa(intNum)
	fmt.Printf("str type:%T,value:%v\n", str, str)
	// itoa方法的实现源码如下:
	formatStr := strconv.FormatInt(int64(intNum), 10)
	fmt.Printf("formatStr type:%T,value:%v\n", formatStr, formatStr)
	// fmt的方式
	fmtstr := fmt.Sprint(intNum)
	fmt.Printf("fmtstr type:%T,value:%+v\n", fmtstr, fmtstr)
}

运行结果为:

4、string类型转换为int

代码语言:go
复制
func stringToInt() {
	var str string = "124"
	num, _ := strconv.Atoi(str)
	fmt.Printf("num type:%T,value:%v\n", num, num)
	// atoi方法的实现源码如下:
	parseInt, _ := strconv.ParseInt(str, 10, 0)
	fmt.Printf("parseInt type:%T,value:%v\n", parseInt, parseInt)
}

运行结果为:

5、string类型转换为int,传值不正确的时候是转换不了的

代码语言:go
复制
func stringToIntErr() {
	var str string = "qwe"
	num, _ := strconv.Atoi(str)
	fmt.Printf("num type:%T,value:%v\n", num, num)
}

运行结果:

6、byte类型转换为int

代码语言:go
复制
func byteToInt() {
	// 字符需要使用单引号包起来
	b := []byte{'1', '2', '3'}
	bytesBuffer := bytes.NewBuffer(b)
	fmt.Printf("bytesBuffer type:%T,value:%v\n", bytesBuffer, bytesBuffer)
	str := bytesBuffer.String()     // 先转为string
	byteNum, _ := strconv.Atoi(str) // 在转为int
	fmt.Printf("byteNum type:%T,value:%v\n", byteNum, byteNum)
}

运行结果:

7、byte类型转为int32

代码语言:go
复制
func byteToInt32() {
	c := []byte{0, 0, 0, 99}
	cBytes := bytes.NewBuffer(c)
	var num int32
	binary.Read(cBytes, binary.BigEndian, &num)
	fmt.Printf("num type:%T,value:%v\n", num, num)
	// 0x表示16进制
	// 0x03转化二进制为0011,十进制为3,但是在第二节所以表示256*3=768
	// 0xe8转化二进制为1110 1000,十进制为232
	b := []byte{0x00, 0x00, 0x03, 0xe8}
	bBytes := bytes.NewBuffer(b)
	binary.Read(bBytes, binary.BigEndian, &num)
	fmt.Printf("num type:%T,value:%v\n", num, num)
}

运行结果:

8、int类型转为byte

代码语言:go
复制
func intToByte() {
	var num int32 = 99
	bytesBuffer := bytes.NewBuffer([]byte{})
	binary.Write(bytesBuffer, binary.BigEndian, num)
	byteB := bytesBuffer.Bytes()
	fmt.Printf("byteB type:%T,value:%v\n\n", byteB, byteB)
}

运行结果:

9、byte转为string

代码语言:go
复制
func byteToString() {
	buf := []byte{'h', 'e', 'l', 'l', 'o'}
	buf2 := bytes.NewBuffer(buf).String()
	fmt.Printf("buf2 type:%T,value:%v\n", buf2, buf2)
	// ascii值:48-57表示0-9,65-90表示A-Z,97-122表示a-z
	str := string([]byte{97, 98, 99, 100})
	fmt.Printf("str type:%T,value:%v\n\n", str, str)
}

运行结果:

10、string转为byte

代码语言:go
复制
func stringToByte() {
	// ascii值:48-57表示0-9,65-90表示A-Z,97-122表示a-z
	var str string = "hello"
	var bstr []byte = []byte(str)
	fmt.Printf("bstr: type:%T,value:%v\n", bstr, bstr)
}

运行结果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、int类型转换为int32
  • 2、int32类型转uint
  • 3、int类型转换为string
  • 4、string类型转换为int
  • 5、string类型转换为int,传值不正确的时候是转换不了的
  • 6、byte类型转换为int
  • 7、byte类型转为int32
  • 8、int类型转为byte
  • 9、byte转为string
  • 10、string转为byte
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档