【Go语言0基础学习之旅#5】 Golang基本数据类型相互转换

文章介绍了Go语言中基本数据类型之间的转换方法,包括使用`fmt.Sprintf`和`strconv`包的函数进行字符串与数值之间的转换,强调了转换的语法和注意事项,如强制转换、溢出处理以及无效转换时的默认值设定。
摘要由CSDN通过智能技术生成

一、转换基本语法

Golang中的基本数据转换需要显示转换,即强制转换。

转换基本语法:数据类型(变量)

注意事项:
注意:被转换的是变量储存的数据(即值),变量本身的数据类型并没有变化
大范围数据转换为小范围数据时编译器不会报错,但是转换结果会按照溢出处理。在转换时需要考虑范围问题。

小提示:在包前加下划线_,表示忽略,不会报错。eg:

package main

import _ "fmt"

func main() {

}

在使用Go语言标准库的时候,可以多去Go官方文档查看资料。

Go官方文档:Go官方文档

二、基本数据类型转String类型

方法一:fmt.Sprintf(“%参数”,表达式) (常用)

fmt.Sprintf(“%参数”,表达式)fmt.Sprintf()会返回转换后的字符串
对于“%参数”的使用和选择参考Go官方文档

函数说明:

// Sprintf formats according to a format specifier and returns the resulting string.
func Sprintf(format string, a ...any) string {
	p := newPrinter()
	p.doPrintf(format, a)
	s := string(p.buf)
	p.free()
	return s
}

使用和举例的文章:【Go黑帽子】使用Golang编写一个TCP扫描器(基础篇)

package main

import (
	"fmt"
	"net"
)

func main() {
	for i := 1; i <= 1024; i++ {
		//将i的值和地址一起转换为字符串
		address := fmt.Sprintf("scanme.nmap.org:%d", i)

		conn, err := net.Dial("tcp", address)

		//如果端口已关闭或已过滤,直接进入下一循环
		if err != nil {
			continue
		}

		//关闭端口连接
		conn.Close()
		fmt.Printf("%d open\n", i)
	}
}

方法二:使用strconv包的函数

使用strconv包中的如下函数:
函数
它们的使用详情可以在 Go官方文档 中查看:

详情
使用举例如下:

package main

import (
	"fmt"
	"strconv"
)

var (
	num1 int     = 100
	num2 float64 = 99.99
	b    bool    = true
)

func main() {
	str1 := strconv.FormatInt(int64(num1), 10)
	fmt.Printf("the type of num1 is %T,str = %q\n", str1, str1)

	str2 := strconv.FormatFloat(num2, 'f', 5, 64)
	fmt.Printf("the type of num1 is %T,str = %q\n", str2, str2)

	str3 := strconv.FormatBool(b)
	fmt.Printf("the type of num1 is %T,str = %q\n", str3, str3)
}

//输出结果:
// the type of num1 is string,str = "100"
// the type of num1 is string,str = "99.99000"
// the type of num1 is string,str = "true"

其余转换方法:func Itoa

int转string类型函数——func Itoa(i int) string
转换
该方法可以方便简单地将int类型转换为string类型。

三、String类型转基本数据类型

使用strconv包的函数进行转换:

String
Go官方文档 中查看其基本使用方法

String转
使用举例如下:

package main

import (
	"fmt"
	"strconv"
)

var (
	b1 string = "100"
	b2 string = "99.99"
	b3 string = "true"
)

func main() {
	num1, _ := strconv.ParseInt(b1, 10, 64)
	fmt.Printf("the type of nmu1 is %T,num1 = %v\n", num1, num1)

	num2, _ := strconv.ParseFloat(b2, 64)
	fmt.Printf("the type of nmu1 is %T,num1 = %v\n", num2, num2)

	num3, _ := strconv.ParseBool(b3)
	fmt.Printf("the type of nmu1 is %T,num1 = %v\n", num3, num3)

}

//输出结果:
// the type of nmu1 is int64,num1 = 100
// the type of nmu1 is float64,num1 = 99.99
// the type of nmu1 is bool,num1 = true

四、String类型转基本数据类型使用细节

注意
需要确保String类型能够转换成有效的数据类型。
无效转换时编译器不会报错,但是值的结果会变为已转类型的默认值
eg:

package main

import (
	"fmt"
	"strconv"
)

func main() {

	var str string = "hello world!"

	num1, _ := strconv.ParseInt(str, 10, 64)
	fmt.Printf("the type of nmu1 is %T,num1 = %v\n", num1, num1)

	num2, _ := strconv.ParseBool(str)
	fmt.Printf("the type of nmu2 is %T,num2 = %v\n", num2, num2)

}

//输出结果:
// the type of nmu1 is int64,num1 = 0
// the type of nmu2 is bool,num2 = false

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小夏与酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值