go中int和string的转换
0、int的长度
go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节。如果是64位操作系统,int类型的大小就是8个字节。可以用 strconv.IntSize
来打印,结果是64
bit,也就是8个字节,int == int64。
https://blog.csdn.net/FromTheWind/article/details/105862844
// int8 表示一个字节,也是一个byte
var i1 int = 1
var i2 int8 = 2
var i3 int16 = 3
var i4 int32 = 4
var i5 int64 = 5
fmt.Println(unsafe.Sizeof(i1))
fmt.Println(unsafe.Sizeof(i2))
fmt.Println(unsafe.Sizeof(i3))
fmt.Println(unsafe.Sizeof(i4))
fmt.Println(unsafe.Sizeof(i5))
/*
int类型的大小为 8 字节
int8类型大小为 1 字节
int16类型大小为 2 字节
int32类型大小为 4 字节
int64类型大小为 8 字节
*/
var num = 1
fmt.Printf("%T\n", num) // int ,系统默认推断的类型是 int型
1. 将数字整形转换成字符串,下面2种方法是一样的。
var num = 1
a2 := strconv.Itoa(num)
a2 := strconv.FormatInt(int64(num), 10)
fmt.Printf("%T, %v\n", a2, a2) // string, 1
2、将数字字符串转换为整型,下面2种方法是一样的。
var s1 = "1234"
i1, err := strconv.Atoi(s1)
i1, err := strconv.ParseInt(s1, 10, 0)
if err != nil {
fmt.Print(err)
}
fmt.Printf("%T, %v\n", i1, i1) // int, 1234
3、 string(a) ,int() 这些函数怎么使用,看上去是类型转换,其实不是。
var s2 int64 = 1
fmt.Printf("%T, %v\n", s2, s2) // int64 1
s3 := int8(s2)
fmt.Printf("%T, %v\n", s3, s3) // int8 1
// string() int() 这类转换,只能是相同的数据类型,才能这样转,比如 int -> int64 , int8 -> int32, 小精度转换成高精度。
// 1个 string 字符串,是由1个1个的 8-bit bytes 组成 , uint8 就是1个byte, 8 bit 。
s4 := string(98)
fmt.Printf("%T, %v\n", s4, s4) // string, b
// string() 里面,要么放入字符串,转换后还是字符串。要么放数字整行,当做asII码来对待,转换成具体的值。
//修改字符串中的值
c4 := "hello"
fmt.Printf("%T, %v\n", c4, c4) // string, hello
c5 := []byte(c4) //先转换成 byte 切片
fmt.Printf("%T, %v\n", c5, c5) // []uint8, [104 101 108 108 111]
c5[0] = 101 //替换
//c5[0] = 'b' //替换
var bb1 byte = 97 //和下面相等,
var bb2 byte = 'a' //
fmt.Printf("%T, %v\n", bb1, bb1) // uint8, 97
fmt.Printf("%T, %v\n", bb2, bb2) // uint8, 97
c6 := string(c5) //再把切片转换成字符串
//c6 := string([]byte{104,101,108,108,111}) //再把切片转换成字符串
fmt.Printf("%T, %v\n", c6, c6) // string, bello
版权声明:本文为yangyi2083334原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。