int 系列: 有符号
uint 系列: 无符号
float 系列:只有float32 和 float64
var定义时,float必须指定是32还是64,int和uint可以不指定
int8 ===1
int32 === 4
int64 ===8
占用内存数
reflect.TypeOf(i): 查看i的类型
unsafe.Sizeof(i): 查看i内存占用大小
类型零值
数值(复数)类型-0, bool-False , string- 空字符串
type *** int32 var a int32
*** 和 a不是同一个类型
变量和常量
同一行: var a, b, c int = 1,2,3 或者 a, b:=1,2(函数体内,var声明的全局变量)
大写字母开头变量可在其他包里读取到,小写字母开头为私有变量
var a,b,c int =1,2,3 可以变成 var a,b,c =1,2,3 (省略类型) 还可以变成 a,b,c :=1,2,3(省略掉var)
不过要注意的是:var只能在函数体内做局部变量时省略,而数据类型都可以省略
"_"相当于一个垃圾桶,把不要的值丢到垃圾桶里
const *** 【type】= ***** 显式常量
const *** = ***** 隐式常量
iota 只能在常量定义中使用
iota遇到const是会重置为0, 在const声明变量是,每增加一行,iota值会加1
如:const a = iota
const b = iota
iota值为0
const (
a = iota
b = iota
)
此时iota值为1
跳值使用iota使用_来达到目的:
package main
import "fmt"
const (
a = iota
b = iota
_
c = iota
)
func main() {
fmt.Println("hello world")
fmt.Println(b)
fmt.Print(c)
}//a为0.b为1, c为3
当常量表达式为空时,会自动继承上一个存在非空的表达式。
const (
a = iota * 2
b
c
)b, c会继承上一级的iota*2