golang 类型转换

go 类型转换

go 查看变量类型 reflect.TypeOf(变量名 )

int 转string

s:=strconv.Itoa(i) 等价于 strconv.FormatInt(int(i),10)
示例:
func zhuan(){
	var a int = 2
	fmt.Println(a,reflect.TypeOf(a))
	b:=strconv.Itoa(a)
	b:=strconv.FormatInt(int64(a),10)
	fmt.Println(b,reflect.TypeOf(b))
}

int64转string

i := int64(123)
s := strconv.FormatInt(i, 10)
第二个参数为基数,可选2~36

注:对于无符号整形,可以使用FormatUint(i uint64, base int)

示例:

func zhuan(){
	i := int64(1234)
	fmt.Println(i,reflect.TypeOf(i))
	s:=strconv.FormatInt(i,10)
	fmt.Println(s,reflect.TypeOf(s))
}

string转int

i,err :=strconv.Atoi(s)
字符串转int有一个空值变量一起跟着转换,所以可以用一个_ 来承接这个nil 
示例:
func zhuan(){
	a1 := "223344"
	fmt.Println(a1,reflect.TypeOf(a1))
	b2,_:=strconv.Atoi(a1)
	fmt.Println(b2,reflect.TypeOf(b2))
}

string 转 int64

i, err := strconv.ParseInt(s, 10, 64)
第二个参数为基数(2~36),第三个参数位大小表示期望转换的结果类型,其值可以为0, 8, 16, 32和64,分别对应 int, int8, int16, int32和int64

func zhuan(){
    a1 := "223344"
	b3,_:=strconv.ParseInt(a1,10,64)
	fmt.Println(b3,reflect.TypeOf(b3))
}

float 相关

float转string

a:=10
b:=3.99
//将不同类型转成相同类型进行计算操作
//类型转换格式 数据类型(变量) 数据类型(表达式)
//c:=float64(a)*b
//将浮点型转成整型数据 保留浮点型整数部分 舍弃小数部分  不会进行四舍五入
c:=a*int(b)
fmt.Println(c)

string转float

func zhuan(){
	s3:="3.1415926535"
	b4,_:=strconv.ParseFloat(s3,32)
	b5,_:=strconv.ParseFloat(s3,64)
	fmt.Println(b4,reflect.TypeOf(b4))
	fmt.Println(b5,reflect.TypeOf(b5))
}

float转string

func zhuan(){
	s4:=3.1415926535
	b6:=strconv.FormatFloat(s4, 'E', -1, 32)
	b7:=strconv.FormatFloat(s4, 'E', -1, 64)
	fmt.Println(b6,reflect.TypeOf(b6))   ///3.1415927E+00 string
	fmt.Println(b7,reflect.TypeOf(b7))       ///3.1415926535E+00 string
}
注意语法类型:
s1 := strconv.FormatFloat(v, 'E', -1, 32) 
v代表要转换的变量,'E'为参数,-1为对应转换过去的小数点后续数量,32/64为需要转变的类型
/// 'b' (-ddddp±ddd,二进制指数)
/// 'e' (-d.dddde±dd,十进制指数)
/// 'E' (-d.ddddE±dd,十进制指数)
/// 'f' (-ddd.dddd,没有指数)
/// 'g' ('e':大指数,'f':其它情况)
/// 'G' ('E':大指数,'f':其它情况)

//string到int int,err:=strconv.Atoi(string)

//string到int64 int64, err := strconv.ParseInt(string, 10, 64) //int到string string:=strconv.Itoa(int)

//int64到string string:=strconv.FormatInt(int64,10)

//string到float32(float64) float,err := strconv.ParseFloat(string,32/64)

//float到string string := strconv.FormatFloat(float32, 'E', -1, 32) string := strconv.FormatFloat(float64, 'E', -1, 64)

// 'b' (-ddddp±ddd,二进制指数)

// 'e' (-d.dddde±dd,十进制指数)

// 'E' (-d.ddddE±dd,十进制指数)

// 'f' (-ddd.dddd,没有指数)

// 'g' ('e':大指数,'f':其它情况)

// 'G' ('E':大指数,'f':其它情况)

你可能感兴趣的:(golang)