Go数字类型

  • Post author:
  • Post category:其他




01.数字类型



1.1 Golang数据类型介绍


  • Go


    语言中数据类型分为

    :基本数据类型和复合数据类型

  • 基本数据类型有:

    • 整型、浮点型、布尔型、字符串

  • 复合数据类型有:

    • 数组、切片、结构体、函数、map、通道(channel)、接口



1.2 整型分为两大类

  • 有符号整形按长度分为:int8、int16、int32、int64
  • 对应的无符号整型:uint8、uint16、uint32、uint64

img


  • 关于字节:

    • 字节也叫 Byte,是计算机数据的基本存储单位。8bit(位)=1Byte(字节) 1024Byte(字节)=1KB
    • 1024KB=1MB 1024MB=1GB
    • 1024GB=1TB 。在电脑里一个中文字是占两个字节的。



1.3 unsafe.Sizeof

  • unsafe.Sizeof(n1) 是 unsafe 包的一个函数,可以返回 n1 变量占用的字节数
package main
import (
	"fmt"
	"unsafe"
)
func main() {
	var a int8 = 124
	fmt.Printf("%T\n", a)       // int8
    fmt.Println(unsafe.Sizeof(a))      // 1 (表示占用1个字节,也就是8 byte)
}



1.4 int不同长度直接的转换

package main
import (
	"fmt"
)
func main() {
	var num1 int8
	num1 = 127
	num2 := int32(num1)   // 将num1类型转换成 int32 并赋值给num1
	fmt.Printf("值:%v 类型%T", num2, num2) //值:127 类型 int32
}



1.5 浮点型

  • Go 语言支持两种浮点型数:float32 和 float64
package main
import (
	"fmt"
	"math"
)
func main() {
	fmt.Printf("%f\n", math.Pi)    // 3.141593 (默认保留 6 位小数)
	fmt.Printf("%.2f\n", math.Pi)   // 3.14 (保留 2 位小数)
}



1.6 reflect.TypeOf查看数据类型

package main
import (
	"fmt"
	"reflect"
)

func main() {
	c := 10
	fmt.Println( reflect.TypeOf(c) )   // int
}



02.int互转



2.0 int常用转换

package main

import (
	"fmt"
	"strconv"
)

func main()  {
	// string到int
	intV,_ := strconv.Atoi("123456")
	// string到int64
	int64V, _ := strconv.ParseInt("123456", 10, 64)

	// int到string
	strS := strconv.Itoa(123)
	// int64到string
	var tmp int64 =  123
	str64S:=strconv.FormatInt(tmp,10)
	
	fmt.Printf("%T--%T--%T--%T", intV, int64V, strS, str64S)
	// int--int64--string--string
}



2.1 int8转int16

package main
import "fmt"
func main() {
	var a int8 = 20
	var b int16 = 40
	var c = int16(a) + b    //要转换成相同类型才能运行
	fmt.Printf("值:%v--类型%T", c, c)  //值:60--类型 int16
}



2.2 int16转float32

package main
import "fmt"
func main() {
	var a float32 = 3.2
	var b int16 = 6
	var c = a + float32(b)
	fmt.Printf("值:%v--类型%T", c, c)  //值:9.2--类型 float32
}



2.3 math.Sqrt强转

package main
import (
	"fmt"
	"math"
)
func main() {
	var a, b = 3, 4
	var c int
	// math.Sqrt()接收的参数是 float64 类型,需要强制转换
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)  // 5
}



03.int与str转换



3.1 int与str转换

package main
import (
	"fmt"
	"strconv"
)

func main() {
	//2.1 int64转str
	var num2 int64 = 123456
	str2 := strconv.FormatInt(num2, 10)
	fmt.Printf("%v---%T \n",str2,str2)  // 123456---string

	//2.2 str转int64
	v1, _ := strconv.ParseFloat(str2, 64)
	fmt.Printf("%v---%T\n",v1,v1)      // 123456---float64
}



3.2 str与int64转换

package main
import (
	"fmt"
	"strconv"
)

func main() {
	//1.1 int转sting
	num1 := 123456
	str1 := strconv.Itoa(num1)
	fmt.Printf("%v---%T \n",str1,str1)  // 123456---string

	// 1.2 sting转int
	_int, err := strconv.Atoi(str1)
	fmt.Println(_int,err)  // 123456 <nil>
	fmt.Printf("%v---%T\n",_int,_int)   // 123456---int


	//2.1 int64转str
	var num2 int64 = 123456
	str2 := strconv.FormatInt(num2, 10)
	fmt.Printf("%v---%T \n",str2,str2)  // 123456---string

	//2.2 str转int64
	v1, _ := strconv.ParseFloat(str2, 64)
	fmt.Printf("%v---%T\n",v1,v1)      // 123456---float64
}



04.布尔值

  • Go 语言中以 bool 类型进行声明布尔型数据,布尔型数据只有 true(真)和 false(假)两个值。
  • 注意:

    • 1.布尔类型变量的默认值为 false。
    • 2.Go 语言中不允许将整型强制转换为布尔型.
    • 3.布尔型无法参与数值运算,也无法与其他类型进行转换。
package main
import (
	"fmt"
	"unsafe"
)
func main() {
	var b = true
	fmt.Println(b, "占用字节:", unsafe.Sizeof(b))  // true 占用字节: 1
}



版权声明:本文为fushan2012原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。