[toc]golang
数值型
整数类型
int, int8(1字节), int16(2字节), int32(3字节), int64(4字节);数组
int8范围: -2的七次方 到2的七次方 - 1
xxxx
xxx
xxx函数
uint, uint8, uint16, uint32, unit64, byte学习
uint8范围:0 到2的8次方-1
xxxx
以此类推ui
rune ~ 等价int32, 表示一个unicode编码
byte 0~255指针
浮点类型 float32, float64code
字符型:没有专门的字符型,使用byte来保存单个字母字符orm
布尔型: bool接口
字符串:string
指针
数组
结构体
管道
函数
切片
接口
map
备注:
一、查看某个变量的数据类型
package main import "fmt" func main() { var n1 = 100 fmt.Printf("n1类型:%T", n1) } //n1类型:int
二、整型默认声明类型为int
package main import ( "fmt" "unsafe" ) func main() { var n1 = 100 fmt.Printf("n1 的 类型:%T, 占用的字节数:%d", n1, unsafe.Sizeof(n1)) } //n1 的 类型:int, 占用的字节数:8
三、变量在使用时,尽可能使用占用空间小的数据类型
四、bit 计算机中的最小存储单位
byte 计算机中基本存储单元
1 byte = 8 bit
五、浮点数 = 符号位+指数位+尾数位 //这怎么理解?
浮点默认声明 float64类型
可能有精度损失?
float64精度比float32更准确
看一个例子:
package main import ( "fmt" ) func main() { var price1 float32 = -123.0000901 var price2 float64 = -123.0000901 fmt.Println("price1=", price1) //price1= -123.00009 fmt.Println("price2=", price2) //price2= -123.0000901 }
6.字符使用
若是保存的字符在ASCII表的, 好比[0-1, a-z, A-Z..] 直接保存到byte
对应码值大于255, 能够考虑使用int类型
package main import ( "fmt" ) func main() { //var price byte = '北' //overflow溢出 var price int = '北' fmt.Println("price=", price) //返回97 fmt.Printf("price=%c", price) //返回a }
存储:字符->对应码值->二进制->存储
读取: 二进制->码值->字符->读取
GO编码统一utf8
七、字符串是不可变的
package main import ( "fmt" ) func main() { var str = "hello world" str[0] = 'a' //报错 fmt.Println("str=", str) }
字符串的表示方式
1)双引号, 会识别转义字符
2)反引号, 以字符串的原生形式输出,包括换行和特殊字符
package main import ( "fmt" ) func main() { str := "hello\nworld" fmt.Println("str=", str) str1 := ` package main import ( "fmt" ) func main() { str := "hello\nworld" fmt.Println("str=", str) ` fmt.Println("str1=", str1) }
字符串拼接:
package main import ( "fmt" ) func main() { str := "hello\nworld" + "你好" fmt.Println("str=", str) }
判断进制存储:
package main import ( "fmt" "strconv" ) func main() { n := int64(123) fmt.Println(strconv.FormatInt(n, 2)) //1111011 }