Go 语言中数据类型分为:基本数据类型和复合数据类型基本数据类型有:
整型、浮点型、布尔型、字符串
复合数据类型有:
数组、切片、结构体、函数、map、通道(channel)、接口等。
int整型
整型的类型有很多中,包括 int8,int16,int32,int64。我们可以根据具体的情况来进行定义
类型转换
var a1 int16 = 10
var a2 int32 = 12
var a3 = int32(a1) + a2
fmt.Println(a3)
浮点型
Go语言支持两种浮点型数:float32和float64
var pi = math.Pi
// 打印浮点类型,默认小数点6位
fmt.Printf("%f\n", pi)
// 打印浮点类型,打印小数点后2位
fmt.Printf("%.2f\n", pi)
Golang中精度丢失的问题
解决方法,使用第三方包来解决精度损失的问题
http://github.com/shopspring/decimal
布尔类型 true false
字符串类型
len(str):求长度
+或fmt.Sprintf:拼接字符串
strings.Split:分割
strings.contains:判断是否包含
strings.HasPrefix,strings.HasSuffix:前缀/后缀判断
strings.Index(),strings.LastIndex():子串出现的位置
strings.Join():join操作
strings.Index():判断在字符串中的位置
基本数据类型转换
数值类型转换
// 整型和浮点型之间转换
var aa int8 = 20
var bb int16 = 40
fmt.Println(int16(aa) + bb)
// 建议整型转换成浮点型
var cc int8 = 20
var dd float32 = 40
fmt.Println(float32(cc) + dd)
建议从低位转换成高位,这样可以避免
转换成字符串类型
第一种方式,就是通过 fmt.Sprintf()来转换
// 字符串类型转换
var i int = 20
var f float64 = 12.456
var t bool = true
var b byte = 'a'
str1 := fmt.Sprintf("%d", i)
fmt.Printf("类型:%v-%T \n", str1, str1)
str2 := fmt.Sprintf("%f", f)
fmt.Printf("类型:%v-%T \n", str2, str2)
str3 := fmt.Sprintf("%t", t)
fmt.Printf("类型:%v-%T \n", str3, str3)
str4 := fmt.Sprintf("%c", b)
fmt.Printf("类型:%v-%T \n", str4, str4)
第二种方法就是通过strconv包里面的集中转换方法进行转换
// int类型转换str类型
var num1 int64 = 20
s1 := strconv.FormatInt(num1, 10)
fmt.Printf("转换:%v - %T", s1, s1)
// float类型转换成string类型
var num2 float64 = 3.1415926
/*
参数1:要转换的值
参数2:格式化类型 'f'表示float,'b'表示二进制,‘e’表示 十进制
参数3:表示保留的小数点,-1表示不对小数点格式化
参数4:格式化的类型,传入64位 或者 32位
*/
s2 := strconv.FormatFloat(num2, 'f', -1, 64)
fmt.Printf("转换:%v-%T", s2, s2)
字符串转换成int 和 float类型
str := "10"
// 第一个参数:需要转换的数,第二个参数:进制, 参数三:32位或64位
num,_ = strconv.ParseInt(str, 10, 64)
// 转换成float类型
str2 := "3.141592654"
num,_ = strconv.ParseFloat(str2, 10)