在go中,数据类型都有一个默认值,当没有赋值时,就会保留默认值,在go中,默认值又叫零值。
基本数据类型默认值
基本数据类型的转换
Go在不同类型的变量之间赋值时需要显式转换。也就是说Golang中数据类型不能自动转换。
基本语法
表达式 T(v) 将值V 转换为类型
T : 就是数据类型、比如int32. int64. float32等等
v: 就是需要转换的变帚
var i int32 =100
//i ===> float
var j float32 = float32(i)
var k int8 = int8(i)
fmt.Printf("i=%v j=%v k=%v",i,j,k)
细节说明
1) Go中,数据类型的转换可以是从表示范围小-->表示范围大,也可以范围大--->范围小
2) 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
3) 在转换中,比如将int64转成int8 【-128--127】,编译时不会报错,只是转换的结果是
按溢出处理,和我们希望的结果不—样。
import (
"fmt"
_ "unsafe" //如果我们没有使用到一个包,但是有想去掉,前面加一个 _表示忽略
)
Golang标准库文档
Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国
基本数据类型和string的转换
在程序开发中,经常将基本数据类型转成string或者将string 转成基本数据类型。
方式1: mt.Sprintf("%参数",表达式)
1)参数需要和表达式的数据类型相匹配
2)fmt.Sprintf()会返回转换后的字符串
var num1 int = 99
var num2 float64 = 16.44
var flag bool = true
var gchar byte = 'o'
var str string //空的string
//使用第一种方式来转换 fmt .sprintf方法
str = fmt.Sprintf("%d",num1)
fmt.Printf(" str type %T str=%v \n",str,str )
str = fmt.Sprintf("%f",num2)
fmt.Printf(" str type %T str=%v \n",str,str )
str = fmt.Sprintf("%t",flag)
fmt.Printf(" str type %T str=%v \n",str,str )
str = fmt.Sprintf("%c",gchar)
fmt.Printf(" str type %T str=%v \n",str,str )
方式2: 使用strconv包的函数
//第二种方式 strconv
var num3 int = 75
var num4 float64 = 26.44
var flag2 bool = false
//返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字
str = strconv.FormatInt(int64(num3),10)
fmt.Printf(" str type %T str=%v \n",str,str )
//说明:'f' :格式 9: 表示小数位保留10位 64:表示这个小数是float64
str = strconv.FormatFloat(num4,'f',9,64)
fmt.Printf(" str type %T str=%v \n",str,str )
str = strconv.FormatBool(flag2)
fmt.Printf(" str type %T str=%v \n",str,str )
//int ===> String
var str string
var num5 int64 = 376
str = strconv.Itoa(int(num5))
fmt.Printf(" str type %T str=%v \n",str,str )
string类型转基本数据类型
使用strconv包的函数
var str string = "false"
var b bool
//说明
// 1.strconv.ParseBool(str)函数会返回两个值(value bool, err error)
// 2.因为我只想获取到value bool ,不想获取err 所以我使用 _忽略
b , _ =strconv.ParseBool(str)
fmt.Printf(" b type %T b=%v \n",b,b)
var str2 string = "1473695"
var n1 int64
var n2 int
n1 , _ =strconv.ParseInt(str2,10,64)
n2 = int(n1)
fmt.Printf(" n1 type %T n1=%v \n",n1,n1)
fmt.Printf(" n2 type %T n2=%v \n",n2,n2)
var str3 string = "48.34"
var f1 float64
f1 , _ = strconv.ParseFloat(str3,64)
fmt.Printf(" f1 type %T f1=%v \n",f1,f1)
注意事项
在将string类型转成基本数据类型时,要确保string类型能够转成有效的数据,比如我们可以把"123",转成一个整数,但是不能把“hey"转成一个整数,如果这样做,Golang直接将其转成0