1:一个包下面可以有多个人源文件
2:import按照书序导入加载(优先执行文件里的init方法)
3:类型别名不能参加正常运算(要同一个类型的前提下才行)
4:申明的变量没有使用,也会报错
5:定义包名 -> 最好文件夹唯独定义包名
6:var a,b,c = 11,21,31 / a,b,c := 11,21,31 (全部变量必须要有var关键字,局部变脸可以不用var)
7:var a,_,c = 11,21,31 //下划线表示把值丢到垃圾桶
8:类型转换(不兼容的类型是不能转换的)
var a int =3
var b float32 = 3.01
c := float32(a)
fmt.Print(c)
fmt.Print(reflect.TypeOf(c)) //获取值的类型
9:变量可见性
var name = "leyangjun"
var Name = "leyangjun" --> 外部包调用的时候只能调用Name,不能调用name,小写的会认为是私有变量
2.1:变量
2.1.1 :申明变量
var v1 int
var v2 string
var v4 [10]int 数组
var v5 struct{
f int
}
2.1.2:变量初始化
var v1 int = 10
var v2 = 10 //编译器可以自动推导出v2的类型
v3 := 10 //编译器可以自动推导出v3的类型(出现在 := 左边的变量不应该是已经申明过得,否则会导致编译错误)
2.1.3:变量赋值
var v10 int
v10 = 123
i,j = j,i //多重赋值,交换变量值
2.2 常量
2.2.1 常量定义
const Pi float64 = 3.14.。。。。。。。。。。。
const (
size int64 = 1024
eof = -1
)
const u,v float32 = 0,3 //u = 0.0 ,v = 3.0 常量的多重赋值
const a,b,c = 3,4,"leyangjun" //a=3,b=4,c="foo" ,无类型整型和字符串常量(无类型常量)
2.2.2 预定义变量
const a = iota
const b = iota //a,b的常量值都重置为0
const(
a = iota //0
b = iota //1 ,计数开始加1
)
2.2.3 枚举
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Firday
Saturday
numberOfDays //这个常量没有导出,为私有,其他可以访问【大写字母开头的常量在包外可见】
)
2.3 类型
1:布尔类型 bool
2:整型 int8,byte,int16,int,uint,uintptr
3:浮点类型 float32,float64
4:复数类型 complex64
5: 字符串类型 string
6:字符类型 rune
7: 错误类型 error
go语言也支持符合类型
1:指针 pointer
2:数组 array
3:分片 slice
4:字典 map
5:通道 chan
6:结构体 struct
7:接口 interface
2.3.1:布尔类型
var v1 bool
v1 = true
v2 := (1 == 2) //v2会被推到为bool类型
注意:布尔类型不能接受其他类型的赋值,不支持自动或强制类型转换
var b bool
b = 1 //编译错误
b = bool(1) //编译错误
正确做法
var b bool
b = (1 != 0)
fmt.PrintIn("Result:",b) //打印出true
2.3.2:整型
注意:int 和 int32在Go里被认为是两种不同类型
var value1 value2
value1 := 64 //value1将会被自动推导为int类型
value2 = value1 //编译错误
value2 = int32(value1) //编译通过
数值运算:+ ,-, *, /
比较运算:>, <, == ,>= ,<= ,!=
2.3.3:浮点型号
包含两种:float32,float64,其中float32等价于C语言的float类型,float64等价于C语言double类型
var fvalue1 float32
fvalue1 = 12
fvalue2 := 12.0 //如果不加小数点,fvalue2会被推导为整型而不是浮点型
fvalue1 = fvalue2 //编译错误
fvalue1 = float32(fvalue2) //强制类型转换
2.3.4:字符串
var str string
str = “leyangjun” //字符串赋值
ch := str[0] //取字符串的第一个字符
注意:字符串的内容不能再初始化后被修改