GO语言 基本数据类型的转换,字符串和其他类型的转换

1、go在不同类型的变量之间赋值时需要显示转化(强制转换),

      表达式T(v)将值v转换为类型

      T:就是数据类型,比如int32,int64,float32等等

       v:就是需要转换的变量

     var i int = 42
     var f float64 =float64(i)
     var u uint8 = uint8(f)
     fmt.Println(i,f,u)

2、注意事项

 1)go中,数据类型的转换可以是从表示范围小->表示范围大,也可以范围大到范围小

 2)被转换的是新变量存储的数据,变量本身的数据类型并没有变化

 3)在转换中,比如将int64转成int8,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样

      因此在转换中,需要考虑范围。

 

3、基本类型转string类型

1)fmt.Sprintf("%参数", 表达式)  

//基本类型转string
var a int =99
var b float64 = 23.345
var c bool = true
var d byte = 'h'
var str string  //空字符串

//使用fmt.Sprintf方法
str = fmt.Sprintf("%d",a);
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=99

str = fmt.Sprintf("%f",b);
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=23.345000

str = fmt.Sprintf("%t",c);
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=true

str = fmt.Sprintf("%c",d);
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=h

2)使用strconv包的函数

//使用strconv包的函数
str = strconv.FormatInt(int64(a),10)  //第一个参数是int64类型,第二个参数表示几进制显示
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=99

str = strconv.FormatFloat(b,'f',10,64)  //第一个参数是变量,第二个参数表示格式,
// f是常规模式,还有科学计数法格式等,第三个参数是小数精度保留几位,第四个参数是代表float64
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=23.3450000000

str = strconv.FormatBool(c)
fmt.Printf("str类型是%T str=%v\n",str,str) //str类型是string str=true

str = strconv.FormatInt(int64(d),10)
fmt.Printf("str类型是%T str=%v\n",str,str)  //str类型是string str=104//strcov包中有函数Itoa,只转int型的,其他类型需要int()强制转换

var num int = 345
str = strconv.Itoa(num)
fmt.Printf("str类型是%T str=%v\n",str,str)

4、string类型转其他类型

var str string = "true"
var str1 string ="123"
var b bool
var a bool

//字符串转布尔类型
b,_=strconv.ParseBool(str);
fmt.Printf("b type %T b=%v \n",b,b) //b type bool b=true
a,_=strconv.ParseBool(str1)
fmt.Printf("a type %T,a %v\n",a,a) //a type bool,a false

//字符串转int型
var n1 int64
var n2 int

//参数1:字符串;参数二:10进制;参数三:64位
n1,_= strconv.ParseInt(str1,10,64)
fmt.Printf("n1 type %T n1=%v \n",n1,n1)  //n1 type int64 n1=123

n2 = int(n1);
fmt.Printf("n2 type %T n2=%v\n",n2,n2)//n2 type int n2=123

n1,_ = strconv.ParseInt(str,10,64)
fmt.Printf("n1 type %T n1= %v\n",n1,n1)  //n1 type int64 n1= 0

var str3 string = "123.456"
var str4 string = "qee"
var f1 float64

//参数1:字符串 参数二:64位
f1,_=strconv.ParseFloat(str3,64)
fmt.Printf("f1 type %T f1 = %v\n" ,f1,f1)//f1 type float64 f1 = 123.456

f1,_=strconv.ParseFloat(str4,64)
fmt.Printf("f1 type %T f1 = %v\n" ,f1,f1)//f1 type float64 f1 = 0

2)注意:在将String转成基本数据类型时,要确保String类型能转为有效的数据,比如”123“能转为一个整数,但是不能将"hello"转为一个整数,go会直接转为0,其他类型,float->0,bool->false。

你可能感兴趣的:(尚硅谷,go核心编程学习笔记,go,基础类型变量转换)