Go语言学习笔记-05数值类型

Go语言学习笔记-05数值类型

整形

平台无关整形:在不同cpu架构或操作系统下长度是一致的

1.有符号整形

int8,int16,int32,int64

2.无符号整形

uint8,uint16,uint32,uint64

平台有关整形:在不同cpu架构或操作系统下长度是不一致的

1.有符号整形:int

2.无符号整形:uint

3.无符号整形:uintptr,大到足以存储任意一个指针的值

可以使用unsafe包下的SizeOf函数获取数据类型的长度

ch05/main.go

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    a, b := int(5), uint(5)
    var c uintptr = 0x123456
    fmt.Println("int的长度为", unsafe.Sizeof(a))
    fmt.Println("uint的长度为", unsafe.Sizeof(b))
    fmt.Println("uintptr的长度为", unsafe.Sizeof(c))
}

输出

int的长度为 8
uint的长度为 8   
uintptr的长度为 8

字面值

十进制:10

八进制:以0开头,010

十六进制:以0x0X开头,0x10,0X10

Go 1.13版本增加以下表示:

二进制:以0b0B开头,0b10,0B10

八进制:以0o0O开头,0o10,0O10

增加分隔符_将数字分组,或者分割前缀

十进制:1_0_0

二进制:0b_1000_1000

八进制:0o_100

十六进制:0x_01_01

ch05/numberliteral/main.go

package main

import (
    "fmt"
)

func main() {
    d1 := 10      // 十进制
    d2 := 1_0     // 十进制
    d3 := 0010    // 八进制,表示十进制的8
    d4 := 00_10   // 八进制,表示十进制的8
    d5 := 0x10    // 十六进制,表示十进制的16
    d6 := 0x_10   // 十六进制,表示十进制的16
    d7 := 0b0010  // 二进制,表示十进制的2
    d8 := 0b_0010 // 二进制,表示十进制的2

    fmt.Println("d1 10的值为", d1)
    fmt.Println("d2 1_0的十进制值为", d2)
    fmt.Println("d3 0010的十进制值为", d3)
    fmt.Println("d4 00_10的十进制值为", d4)
    fmt.Println("d5 0x10的十进制值为", d5)
    fmt.Println("d6 0x_10的十进制值为", d6)
    fmt.Println("d7 0b0010的十进制值为", d7)
    fmt.Println("d8 0b_0010的十进制值为", d8)
}

输出

d1 10的值为 10
d2 1_0的十进制值为 10   
d3 0010的十进制值为 8   
d4 00_10的十进制值为 8  
d5 0x10的十进制值为 16  
d6 0x_10的十进制值为 16 
d7 0b0010的十进制值为 2 
d8 0b_0010的十进制值为 2

格式化输出

占位符 格式
%b 二进制格式
%d 十进制格式
%o 八进制格式
%O 八进制格式,0o开头
%x 十六进制格式,小写
%X 十六进制格式,大写

ch05/integerformat/main.go

package main

import "fmt"

func main() {
    a := 255

    fmt.Printf("255的二进制表示:%b\n", a)  // 11111111
    fmt.Printf("255的十进制表示:%d\n", a)  // 255
    fmt.Printf("255的八进制表示:%o\n", a)  // 377
    fmt.Printf("255的八进制表示:%O\n", a)  // 0o377
    fmt.Printf("255的十六进制表示:%x\n", a) // ff
    fmt.Printf("255的十六进制表示:%X\n", a) // FF
}

输出

255的二进制表示:11111111
255的十进制表示:255  
255的八进制表示:377  
255的八进制表示:0o377
255的十六进制表示:ff 
255的十六进制表示:FF 

浮点数

32位浮点数:float32

64位浮点数:float64

字面值

使用十进制表示浮点值:1.68

整数部分为0可省略:.68

小数部分为0可省略:68.0

科学计数法

十进制:e/E表示底数为10的幂运算,加号可省略

1.68e+2 表示 1.68*10^2 = 168

十六进制:p/P表示底数为2的幂运算,整数和小数以十六进制表示,指数以十进制表示,加号可省略

0x1.p+2 表示 1.0 * 2^2 = 4.0

0x1.ap0 表示 1.625 * 2^0 = 1.625

格式化输出

占位符 格式
%f 以浮点数原值格式输出,%.2f保留两位小数
%e 十进制的科学计数法
%x 十六进制的科学计数法

ch05/float/main.go

package main

import "fmt"

func main() {
    a := float32(10.0)
    b := 10.0
    c := .68
    d := 68.
    e := 10.e2
    f := 0x1.ap+0
    g := 1.625

    fmt.Printf("a的值为%f\n", a)
    fmt.Printf("b的值为%f\n", b)
    fmt.Printf("c的值为%f\n", c)
    fmt.Printf("d的值为%f\n", d)
    fmt.Printf("e的值为%f\n", e)
    fmt.Printf("f的值为%f\n", f)
    fmt.Printf("f的值为%.2f\n", f)
    fmt.Printf(".68的十进制科学计数法形式为%e\n", c)
    fmt.Printf("1.625的十六进制科学计数法形式为%x\n", g)
}

输出

a的值为10.000000
b的值为10.000000                        
c的值为0.680000                         
d的值为68.000000                        
e的值为1000.000000                      
f的值为1.625000                         
f的值为1.62                             
.68的十进制科学计数法形式为6.800000e-01 
1.625的十六进制科学计数法形式为0x1.ap+00

笔记地址

github:https://github.com/xianyuyixi...

交流学习

微信号:xianyuyixia

微信公众号:闲渔一下

你可能感兴趣的:(go)