Go 数字类型

一、数字类型

1、Golang 数据类型介绍
  1. Go 语言中数据类型分为:基本数据类型和复合数据类型
  2. 基本数据类型有:
    1. 整型、浮点型、布尔型、字符串
  3. 复合数据类型有:
    1. 数组、切片、结构体、函数、map、通道(channel)、接口
2、整型分为两大类
  • 有符合整型按长度分为:int8、int16、int32、int64
  • 对应的无符合整型:uint8、uint16、uint32、uint64
  • 关于字节:
    • 字节也叫 Byte,是计算机数据的基本存储单位。8bit(位)=1byte(字节)1024byte(字节)=1kb
    • 1024KB=1MB 1024MB=1GB
    • 1024GB=1TB。在电脑里一个中文字是占两个字节的
3、unsafe.Sizeof
  • unsafe.Sizeof(n1)是 unsafe 包的一个函数。可以返回n1 变量占用的字节数
Go 复制代码
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)
}
4、int 不同长度直接的转换
Go 复制代码
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
}
5、浮点型
  • Go语言支持两种浮点型数:float32和float64
Go 复制代码
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位小数)
}
6.reflect.TypeOf查看数据类型
Go 复制代码
package main

import(
    "fmt"
    "reflect"
)

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

二、int互转

1、int常用转换
Go 复制代码
package main

import(
    "fmt"
    "strconv"
)

func main(){
    //string到int
    intV,_ := strcomv.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、int8转int16
Go 复制代码
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

}
3、int16转float32
Go 复制代码
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

}
4、math.Sqrt强转
Go 复制代码
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.PrintIn(c)    // 5
}

三、int与str转换

1、int与str转换
Go 复制代码
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)    //12345--string

    //2.2 str转int64
    v1,_ := strconv.ParseFloat(str2,64)
    fmt.Printf("%v---%T\n",v1,v1)      // 123456---float64
}
2、str与int64转换
Go 复制代码
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
}

四、布尔值

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

  • 注意:

    • 布尔类型变量的默认值为 false。

    • Go 语言中不允许将整型强制转换为布尔型

    • 布尔型无法参与数值运算,也无法与其他类型进行转换

Go 复制代码
package main
import (
	"fmt"
	"unsafe"
)
func main() {
	var b = true
	fmt.Println(b, "占用字节:", unsafe.Sizeof(b))  // true 占用字节: 1
}
相关推荐
Narutolxy4 分钟前
深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223
开发语言·golang·gin
Hello.Reader11 分钟前
全面解析 Golang Gin 框架
开发语言·golang·gin
禁默22 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Code哈哈笑31 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
程序猿进阶35 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_4336184437 分钟前
shell 编程(二)
开发语言·bash·shell
charlie1145141911 小时前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满1 小时前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He9991 小时前
PHP中替换某个包或某个类
开发语言·php
m0_748236111 小时前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust