go语言基本动作练习<二>

package main

import (
	"fmt"
	"strconv"
)

func main() {
	test17()
}


func test11()  {
	var a float32
	a = 1.2
	fmt.Println("a = ", a) // 此处的结果
	//自动推导类型
	b := 1.2
	fmt.Printf("b type is %Tv\n", b)
	fmt.Println("b = ", b)
}

//3.2 复数类型示例
//在 Go 语言中复数值类型取决于计算机操作系统的位数,我是使用的 64 位的计算机,所以使用:=时,会得到一个类型为 complex128 的变量
func test12()  {
	var a complex64
	a = 1.2 + 2.22i
	fmt.Println("a = ", a) // 此处的结果

	//自动推导类型
	b := 1.2 + 3.45i
	fmt.Printf("b type is %T\n", b)
	fmt.Println("b = ", b)

	//通过内建函数取实部和虚部
	fmt.Println("real(b) = ", real(b), " , imag(b) = ", imag(b))
}

//1. 字符和字符串类型
//序号	类型	说明
//1	byte	uint8 类型的别名,同等于 uint8。一般用于表示 ASCII 字符,即只能操作简单的字符,不支持中文操作。
//2	rune	int32 类型的别名,同等于 int32。一般用于表示 Unicode 字符,即可以处理任何字符。
//3	string	一个指向 byte 数组的指针,可以为空字符串不可为nil。
//结论:
//
//string可以直接转换为rune或者byte的数组;
//rune和byte可以互相转换;
//byte 的操作单位是一个字节,可以理解为一个英文字符;
//rune 的操作单位是一个字符,不管这个字符是什么字符。
func test13()  {
	str := "你好 hello"
	str1 := "你好 hello"
	str2 := "你好 hello"
	str2Rune(&str, 0, 'A')  //将第0个字符替换为A
	str2Byte(&str1, 0, 'A') //将第0个字符替换为A
	str2Byte(&str2, 7, 'A') //将第7个字符替换为A
	fmt.Println("rune 数组处理中文后:", str)
	fmt.Println("byte 数组处理中文后:", str1)
	fmt.Println("byte 数组处理英文后:", str2)
}

//将字符串转换为rune的数组,并替换数组第i个元素为ch
func str2Rune(str *string, i int, ch rune) {
	temp := []rune(*str)
	temp[i] = ch
	*str = string(temp)
}

//将字符串转换为byte的数组,并替换数组第i个元素为ch
func str2Byte(str *string, i int, ch byte) {
	temp := []byte(*str)
	temp[i] = ch
	*str = string(temp)
}

//1.布尔类型
//序号	类型	说明
//1	bool	只能存放true或者false
func test14()  {
	var varb bool
	varb = true
	fmt.Println(varb)
}

//1. 整型和浮点型互相转换
func test15()  {
	var a int = 10 // 声明一个整形变量 a 并给 a 赋值为 10
	var b float32 = 3.14 // 声明一个浮点型变量 b 并给 b 赋值为 3.14

	fmt.Printf("整型转换为浮点型:%f\n",float32(a)) // 将变量 a 强制转换为浮点型变量并打印结果
	fmt.Printf("浮点型转换为整型:%d\n",int(b)) //浮点型转为整型会失真
}

//2. 整形和字符串互相转换
//整型和字符串类型的变量互相转换,需要依靠 Go 语言提供的转换包strconv。字符串转整型需要使用这个包的Atoi(string)方法,整型转字符串则是Itoa(int)。这种转换用得最多的就是给一些对象进行编号。比如需要给张三编号为NO.1,你可能需要将1转换为字符串之后与NO.进行拼接。
func test16()  {
	var a int = 10 // 定义一个整形变量并赋值为 10
	var b string = "10" // 定义一个字符串类型变量并赋值为 "10"

	fmt.Printf("整型转换为字符串:%s\n", strconv.Itoa(a))
	tmp, _ := strconv.Atoi(b)
	fmt.Printf("字符串转换为整型:%d\n", tmp)
}

//3. 浮点型和字符串互相转换
//浮点型和字符串的互相转换没有直接封装好的转换接口了,需要调用strconvs包中稍微底层一点的接口。浮点型转字符串使用FormatFloat(float64,byte,int,int)方法,字符串转换为浮点型则使用ParseFloat(...)方法。因为浮点数在存储过程中容易因为精度问题而存在误差,所以有时候会将浮点数转换为字符串进行存储。
func test17()  {
	f1 := 0.123456789
	s1 := strconv.FormatFloat(f1, 'f', -1, 32)
	s2 := strconv.FormatFloat(f1, 'f', -1, 64)
	s3 := "0.123456789"
	f2, _ := strconv.ParseFloat(s3, 64)
	f3, _ := strconv.ParseFloat(s3, 32)
	fmt.Println("将浮点数转换为float32转换为string:", s2)
	fmt.Println("将float64转换为string:", s1)
	fmt.Println("将string转换为float64:", f2)
	fmt.Println("将string转换为float32再强制转换为float64:", f3)
}
//本文主要学习了 Go 语言中各个数据类型的互相强制转换。主要都是依赖与 strconvs 这个第三方包。这个包中还提供了其它很多的转换方法,大家有机会可以更深入地去了解一下。在做类型转换的时候要注意:浮点型在转为整型时会失真。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值