整形
平台無關整形:在不同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
十六進制:以0x或0X開頭,0x10,0X10
Go 1.13版本增加以下表示:
二進制:以0b或0B開頭,0b10,0B10
八進制:以0o或0O開頭,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/xianyuyixia/gotrip