当前位置: 首页 > article >正文

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

Go数据类型转换

整型与浮点型转换

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 类型转换建议是从低位的类型转换到高位的类型,比如从int转换到float64,从float32转换到float64
	d := 10
	f := 3.14
	fmt.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 10
	fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string true
	fmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000
	fmt.Printf("str_C类型 %T str_C值 %v\n", str_C, str_C) // string a
	fmt.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 10
	fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string true
	fmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000
	fmt.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 10
	fmt.Printf("new_b类型 %T new_b值 %v\n", new_b, new_b) // bool true
	fmt.Printf("new_l类型 %T new_l值 %v\n", new_l, new_l) // float64 3.140000
	fmt.Printf("new_a类型 %T new_a值 %v\n", new_a, new_a) // []uint8 [97]

数值类型与布尔类型转换

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


字符串型与布尔型转换

package main

import (
	"fmt"
	"strconv"
)

func main() {

	b, _ := strconv.ParseBool("true")
	fmt.Printf("Value: %v type:%T\n", b, b) // Value: true type:bool

	c, _ := strconv.ParseBool("xxxxxxx")
	fmt.Printf("Value: %v type:%T\n", c, c) // Value: false type:bool
}

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


http://www.kler.cn/a/421632.html

相关文章:

  • java调用ai模型:使用国产通义千问完成基于知识库的问答
  • Lumos学习王佩丰Excel第十九讲:Indirect函数
  • 使用Mybatis-Plus时遇到的报错问题及解决方案
  • PostgreSQL17.x创建数据库及数据库信息查看命令
  • 【Leetcode 每日一题】52. N 皇后 II
  • 5、防火墙一
  • 基于OpenCV的拆分和合并图像通道实验案例分享_基于RK3568教学实验箱
  • 权限提升漏洞之Netlogon协议详解 以及可能出现得漏洞分析
  • 【035】基于51单片机俄罗斯方块游戏机【Proteus仿真+Keil程序+报告+原理图】
  • Scala模拟匹配
  • 怎么做DNS污染检测
  • 【docker】Dockerfile指令讲解,与企业案例应用
  • 数据结构自测5
  • java垃圾回收机制介绍
  • linux模拟试题
  • Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
  • TypeScript和JavaScript的区别
  • 如何使用brew安装phpredis扩展?
  • 零基础学安全--Burp Suite(4)proxy模块以及漏洞测试理论
  • CTF之WEB(php弱类型绕过)
  • openGauss极致RTO流程讲解及运维方法
  • vue实现懒加载
  • 30分钟学会正则表达式
  • Wwise SoundBanks内存优化
  • renderExtraFooter 添加本周,本月,本年
  • 数据库——创建索引的原则