go中int和string的转换

go中int和string的转换

0、int的长度

go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节。如果是64位操作系统,int类型的大小就是8个字节。可以用 strconv.IntSize来打印,结果是64bit,也就是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版权协议,转载请附上原文出处链接和本声明。