为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【金秋打卡】第17天 Go开发工程师全新版 4-2

【金秋打卡】第17天 Go开发工程师全新版 4-2

2022.11.10 21:57 65浏览

课程名称: Go开发工程师全新版

课程章节: 4-2 基本类型的转换

课程讲师: bobby

课程内容:
转换的格式

变量名 = 转换的类型(要转换的变量名)

数值之间转换(数值之间可以直接转换)

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 有符号整数  转为 无符号整数
	var a int8 = 12
	var b uint8 = uint8(a)	// int8 转 uint8
	var c uint16 = uint16(a)	// int8 转 uint16
    fmt.Println(b, c) // 12 12
	
    // 浮点数 转为 整数
    var a1 float32 = 5.12
    var b1 int = int(a1)  // 5,小数点后面会舍弃掉
    var C1 int8 = int8(a1)  // 5,小数点后面会舍弃掉
    fmt.Println(b1,c1) // 5 5
	
    // 整数 转为 浮点数 
    var a2 int8 = 3
    var b2 float32 = float32(a2)
    var C2 float64 = float64(a2)
    fmt.Println(b2,C2) //3 3
    
}

可以使用 type 关键字设置类型别名:

Go 允许在底层结构相同的两个类型之间互转

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 设置 IT 类型,它的底层 int
    // 相当于给 int 类型起一个别名叫 IT,这里名字可以随意更改
	type IT int
    
	// 使用设置的别名
    // 因为 IT类型 底层是 int,所以这里值要设置为 整数
    var a IT = 5
    
    var intA int = 231
    
    // 这里不能把 int 类型赋值给,IT 类型
    // 因为类型不同,虽然底层一样,需要转换类型
    var a1 IT = intA // 错误
    fmt.Println(a1) // 错误
    
    // int 类型转为,设置的 IT 类型
    var a2 IT = IT(intA)
    fmt.Println(a2) // 231
    
}

注意事项:

  • 不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败
  • 低精度转换为高精度时是安全的,高精度的值转换为低精度时会丢失精度。例如int32转换为int16,float32转换为int
  • 这种简单的转换方式不能对int(float)和string进行互转,要跨大类型转换,可以使用strconv包提供的函数

数值 转 字符串(使用 strconv 包)

数值 转 字符串,不能直接转换需要使用 strconv 包,进行类型互转:

Itoa():int 转 string

Atoi():string 转 int

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var a int = 21
    
    //Itoa() 函数可以实现 int 转 字符串
    mstr := strconv.Itoa(a) //返回一个参数
	fmt.Println(mstr) // 21
    
    
    //Atoi() 函数可以实现 字符串 转 int 
	var a2 string = "12"
    
    myint, err := strconv.Atoi(a2) //返回两个参数
	if err != nil {
		fmt.Println("convert error")
	}
	fmt.Println(myint) // 12
    
}

课程收获:

  1. 数值之间可以直接转换
  2. 使用 strconv 包进行类型转换
    图片描述
点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
1
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消