Go学习笔记之数据类型转换

news/2024/12/3 6:23:30/

Go数据类型转换

整型与浮点型转换

package mainimport ("fmt""strconv"
)func main() {// 类型转换建议是从低位的类型转换到高位的类型,比如从int转换到float64,从float32转换到float64d := 10f := 3.14fmt.Println(float64(d) + f)}

其他类转换成字符串

	// 其他类型转换成字符串类型var i int = 10       // int类型var b bool = true    // bool类型var l float64 = 3.14 // float64类型var a byte = 'a'     // byte类型// 1. 使用Sprintf函数将其他类型转换成字符串类型str_i := fmt.Sprintf("%d", i)                      //Sprintf函数将其他类型转换成字符串类型,%d是int类型的格式str_b := fmt.Sprintf("%t", b)                      //Sprintf函数将其他类型转换成字符串类型,%t是bool类型的格式str_f := fmt.Sprintf("%f", l)                      //Sprintf函数将其他类型转换成字符串类型,%f是float64类型的格式str_C := fmt.Sprintf("%c", a)                      //Sprintf函数将其他类型转换成字符串类型,%c是byte类型的格式fmt.Println("使用Sprintf函数将其他类型转换成字符串类型")            // 使用Sprintf函数将其他类型转换成字符串类型fmt.Printf("str_i类型 %T str_i值 %v\n", str_i, str_i) // string 10fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string truefmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000fmt.Printf("str_C类型 %T str_C值 %v\n", str_C, str_C) // string afmt.Println("----------------------------------------------------")// 2. 使用strconv包中的函数将其他类型转换成字符串类型str_i := strconv.Itoa(i)                           // strconv.Itoa函数将int类型转换成字符串类型str_b := strconv.FormatBool(b)                     // strconv.FormatBool函数将bool类型转换成字符串类型str_f := strconv.FormatFloat(l, 'f', 6, 64)        // strconv.FormatFloat函数将float64类型转换成字符串类型,'f'表示格式为浮点数,6表示小数点后保留6位,64表示float64类型str_C := string(a)                                 // string函数将byte类型转换成字符串类型fmt.Println("使用strconv包中的函数将其他类型转换成字符串类型")         // 使用strconv包中的函数将其他类型转换成字符串类型fmt.Printf("str_i类型 %T str_i值 %v\n", str_i, str_i) // string 10fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string truefmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000fmt.Printf("str_C类型 %T str_C值 %v\n", str_C, str_C) // string a

字符串转换成其他类

	// 字符串转换成其他类// 1. 使用strconv包中的函数将字符串类型转换成其他类型str_i := fmt.Sprintf("%d", i)                      //Sprintf函数将其他类型转换成字符串类型,%d是int类型的格式str_b := fmt.Sprintf("%t", b)                      //Sprintf函数将其他类型转换成字符串类型,%t是bool类型的格式str_f := fmt.Sprintf("%f", l)                      //Sprintf函数将其他类型转换成字符串类型,%f是float64类型的格式str_C := fmt.Sprintf("%c", a)                      //Sprintf函数将其他类型转换成字符串类型,%c是byte类型的格式var new_i int                            // int类型var new_b bool                           // bool类型var new_l float64                        // float64类型var new_a []byte                         // byte切片类型new_i, _ = strconv.Atoi(str_i)           // strconv.Atoi函数将字符串类型转换成int类型,_表示忽略错误new_b, _ = strconv.ParseBool(str_b)      // strconv.ParseBool函数将字符串类型转换成bool类型,_表示忽略错误new_l, _ = strconv.ParseFloat(str_f, 64) // strconv.ParseFloat函数将字符串类型转换成float64类型,64表示float64类型,_表示忽略错误new_a = []byte(str_C)                    // string类型转换成byte类型fmt.Println("使用strconv包中的函数将字符串类型转换成其他类型")fmt.Printf("new_i类型 %T new_i值 %v\n", new_i, new_i) // int 10fmt.Printf("new_b类型 %T new_b值 %v\n", new_b, new_b) // bool truefmt.Printf("new_l类型 %T new_l值 %v\n", new_l, new_l) // float64 3.140000fmt.Printf("new_a类型 %T new_a值 %v\n", new_a, new_a) // []uint8 [97]

数值类型与布尔类型转换

注意:在Go中数值类型无法直接转换成布尔类型,布尔类型也无法直接转换成数值类型。


字符串型与布尔型转换

package mainimport ("fmt""strconv"
)func main() {b, _ := strconv.ParseBool("true")fmt.Printf("Value: %v type:%T\n", b, b) // Value: true type:boolc, _ := strconv.ParseBool("xxxxxxx")fmt.Printf("Value: %v type:%T\n", c, c) // Value: false type:bool
}

不建议将布尔类型转换成字符串型,因为Go中的布尔判断并不依照字符串是否非空进行判断,转换后可能会出现更多问题。


http://www.ppmy.cn/news/1551923.html

相关文章

bash命令缓存导致命令执行失败的问题

1、问题背景 为了修复老版本 vsftpd 的安全漏洞,需要把生产环境上 vsftpd 版本升级到 vsftpd-3.0.5,因为直接使用 rpm 包的方式进行升级还涉及到下层依赖包的升级(生产环境上的依赖包版本不能随意变更,可能会影响其他上层应用),所…

C++零基础入门:基于树莓派Pico的趣味编程体验

"Hello World!" 是每位编程爱好者的起点。通过这个简单的项目,不仅可以了解C的基本语法,还能体验树莓派Pico硬件开发的乐趣。本文将深入解析如何通过“Hello World!”项目,帮助零基础的初学者掌握基础编程技能,并开启信…

网络安全——浅谈HTTP协议

HTTP请求 HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。 HTTP请求由状态行、请求头、请求正文三部分组成: 状态行:包括请求方式Method、资源路径URL、协议版本Version;请求头:包括一些访问的域名、…

PyTorch 模型转换为 ONNX 格式

PyTorch 模型转换为 ONNX 格式 在深度学习领域,模型的可移植性和可解释性是非常重要的。本文将介绍如何使用 PyTorch 训练一个简单的卷积神经网络(CNN)来分类 MNIST 数据集,并将训练好的模型转换为 ONNX 格式。我们还将讨论 PTH …

telnet IP某个端口,但是ping不通IP :网络连接中的不同境遇

在网络探索的旅程中,我们常常会遇到一些看似矛盾的现象,比如能够 Telnet 一个 IP 的端口,却 Ping 不通这个 IP。这究竟是为何呢? 以往,我曾天真地认为,Telnet 通了,Ping 肯定也是通的。毕竟&am…

【Linux探索学习】第十八弹——进程等待:深入解析操作系统中的进程等待机制

Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在Linux操作系统中,进程是资源的管理和执行单元,每个进程都有其自己的生命周期。在进程的执行过程中,进程…

C++关于二叉树的具体实现

目录 1.二叉树的结构 2.创建一棵二叉树 3.二叉树的先序遍历 1.借助栈的先序遍历 2.利用递归的先序遍历 4.二叉树的中序遍历 5.二叉树的后序遍历 1.借助栈的后序遍历 2.利用递归的后序遍历 6.二叉树的层序遍历 7.tree.h 8.tree.cpp 9.main.cpp 1.二叉树的结构 对于…

为什么redis用跳表不用b+树,而mysql用b+树而不是跳表?

写在前面 上一篇文章中,我们深度解析了redis中的跳表结构,而b树的结构我们很久之前就讲过了,那么我们知道了redis的有序集合用的是跳表,而mysql的innodb引擎用的是b树存储,但这是为什么呢?为什么redis用跳…