变量
var 声明,支持类型判断.
var name string
string类型 name
var s string
值初始化
var age = 20
age 类型自动推断
height := 165
简短声明(仅限函数使用)
i,j,k := 3.8,true,100
声明一组变量
_, res := 123,321
_特殊变量名,赋予他的值会被丢弃
常量
const 声明
const Pi = 3.14
声明一个常量Pi
1 | const( |
banana 常量未定义初始化值会与apple值相同
数据类型
boolean,整型,浮点型,字符串,错误
布尔
bool 初始化默认fasle整型
int8,int16,int32,int64 (有符号)
uint8(byte),uint16,uint32(rune),uint64 (无符号)
uintptr
byte,rune 与uint8,uint32别名
整形初始化默认值0
浮点型
float32,float64(默认浮点类型)
complex64,complex128
float32,float64 初始化默认值0
字符串
双引号或
,UTF8编码,\转义
初始化默认值””
修改需要转换类型为 rune或byte 操作后再转换
数组
长度非负整数
var arr = [10]int{1,2,3,4}
声明数组切片 slice
切片默认初始化前nil
s1 := make([]int,3,5)
声明切片append() 尾部追加元素
切片长度是包含的元素个数,
容量是能存储的元素个数.Map
kV结构集合
1
2
3
4m := make(map[string]int) {
"blue": 1,
"red": 2
}
`delete(m,red)` 删除map中一项
`m["orange"] = 3` 增加一项
`m["blue"] = 4` 更新一项
range 遍历map,slice
1
2
3
for i,v := range m {
fmt.Println(i,v)
}
函数
1 | func sub(x,y int) (z int) { |
声明一个方法sub,参数x,y为int型, z返回参数 int型
函数无返回值可不声明,参数也可是函数.
可以传指针或传引用操作
...int
表示传递变长的参数
defer 关键字 在函数最后执行动作的声明(延迟代码)
局部函数声明修改不影响全局,若全局有同名变量时,内部赋值会改变全局变量(非声明).
方法
方法是特殊的函数,区别于方法有前置实例接收参数(receiver)
接口
一种抽象的类型
1 | type I interface { |
声明时,不能有字段,不能自定义方法,只声明方法,不实习现.
1 | //实现接口: |
接收一个接口类型作为参数
p实现了接口I,Get(),Put()方法.