基本数据类型包含数值型、字符型、布尔型以及字符串,下面说明每种类型的用法。
整数类型就是用于存放整数值的。
类型 | 有无符号 | 占用存储空间 | 表数范围 |
int | 有 |
32位系统4字节 64位系统8字节 |
-231~231-1 |
int8 | 有 | 1字节 | -128~127 |
int16 | 有 | 2字节 | -215~215-1 |
int32 | 有 | 4字节 | -231~231-1 |
int64 | 有 | 8字节 | -263~263-1 |
rune | 有 | 与int32一样 | -231~231-1 |
uint | 无 |
32位系统4字节 64位系统8字节 |
0~232-1 0-264-1 |
uint8 | 无 | 1字节 | 0~255 |
uint16 | 无 | 2字节 | 0~216-1 |
uint32 | 无 | 4字节 | 0~232-1 |
uint64 | 无 | 8字节 | 0~264-1 |
byte | 无 | 与uint8等价 | 0~255 |
可以看出有无符号的区别是数的表示范围不一样。
package main import "fmt" func main() { //有符号int8 var i int8 = 127 fmt.Println("i=",i) //无符号int8 var j uint8 = 250 fmt.Println("j=",j) }
执行结果为:
PS D:\go_project\src\go_tutorial\day02\int_\01> go run .\main.go i= 127 j= 250
(1)go语言中有符号与无符号表示数的范围不同,int与uint的范围与操作系统有关
(2)整型默认声明类型为int
package main import ( "fmt" "unsafe" ) func main() { var a = 10 // 查看默认类型 fmt.Printf("a的类型为%T\n", a) //a的类型为int // 查看a变量占用的字节的大小 fmt.Printf("a占用的字节大小%d", unsafe.Sizeof(a)) //a占用的字节大小8 }
浮点数类型就是用来存放小数类型的。
类型 | 有无符号 | 占用存储空间 | 表数范围 |
float32 | 有 |
4字节 |
-3.403E38~3.403E38 |
float64 | 有 | 8字节 | -1.798E308~1.798E308 |
package main import "fmt" func main() { // 浮点数在Go中的使用 var a float32 = -0.369 var b float64 = -0625 fmt.Println("a=", a, "b=", b) //a= -0.369 b= -405 // 尾数可能造成精度的丢失 var c float32 = -203.50000006 var d float64 = -203.50000006 fmt.Println("c=", c, "d=", d) //c= -203.5 d= -203.50000006 // Go中默认浮点型存储类型为float64 var e = 0.236 fmt.Printf("e的类型为%T", e) // e的类型为float64 }
(1)浮点型存储由三部分构成 符号位+指数位+尾数位
(2)尾数位可能会造成精度的丢失,因此为了更加准确的存储精度高的数建议使用float64
(3)浮点数的默认类型位float64
Go中没有专门的字符类型,如果存储单个字符类型,使用byte来实现。
package main import "fmt" func main() { //1、使用byte来存储字符类型,值使用单引号(‘value‘)来表示,直接输出byte值就是输出对应的字符码值 var a = ‘0‘ var b = ‘h‘ fmt.Println("a=", a, "b=", b) //a= 48 b= 104 //2、如果输出对应的字符,需要格式化输出 fmt.Printf("a=%c b=%c\n", a, b) //a=0 b=h //3、byte类型的表数范围是0~255,如果存储的字符码值大于这个,可以使用int类型 //var c byte = ‘张‘ //constant 24352 overflows byte var c int =‘张‘ fmt.Println("c=", c) //c= 24352 //4、如果给一个码值,按照格式化输出可以输出一个unicode字符 var d int = 24352 fmt.Printf("d=%c\n", d) //d=张 //5、字符类型可以运算 var e = ‘m‘ + 10 fmt.Println("e=", e) //e= 119 }
存储:字符--》码值--》二进制--》存储
读取:二进制--》码值--》字符--》读取
字符与码值是通过字符编码表已经规定好的,是不能改变的。
布尔类型也叫bool类型,它只允许取值true或者false。bool类型占1字节空间大小,一般用于各种逻辑运算中。
package main import ( "fmt" "unsafe" ) func main() { // 基本使用 var a = false fmt.Println("a=", a) //a= false // 占用字节 fmt.Println("a占用的字节大小为", unsafe.Sizeof(a)) //a占用的字节大小为 1 }
字符串就是一串固定长度的字符连接起来的字符序列。Go语言中的字符串是由单个字节连接起来的。
package main import "fmt" func main() { // 1、string基本使用 var a = "hello world!" fmt.Println(a) // 2、Go中的字符串是不可变的 // a[0] = ‘k‘ // cannot assign to a[0] (strings are immutable) // fmt.Println(a) // 3、字符串中转义字符使用 b := "aaa\nbbb" fmt.Println(b) // 4、反引号``,以字符串原生形式输出 c := ` func main() { } ` fmt.Println(c) // 5、字符串拼接 d := "hello" + "world" fmt.Println(d) // 6、字符串多行处理 // 字符串分行,保留 + 到上一行 e := "hello" + "world" fmt.Println(e) }
原文:https://www.cnblogs.com/shenjianping/p/15149438.html