一、指针与引用
1.1 指针
- 获取变量的地址,&
var num int = 8
var p *int = &num
-
获取值
*p
-
值类型, 都有对应的指针类型,形式为 *数据类型,int对应的是*int
1.2 值类型与引用类型
-
值类型:
- 基本数据类型int、float、bool、string、数组、结构体struct。
- 直接存储值
- 通常在栈里
-
引用类型:
- 指针、slice切片、map、管道chan等
- 变量存储地址,地址对应空间存储值
- 没有变量引用该地址时,该地址空间成为垃圾,由GC回收
- 通常在堆里面
二、程序流程控制
程序控制有分支控制、循环控制
2.1 分支控制
- if-else
if 条件表达式 { }else if 条件表达式 { }else{ } - switch
case语句块没有break,默认有。默认情况下执行完case后,退出switch语句 注意case的表达式类型要和switch表达式类型相同。 case表达式,隔开 表示满足之一就行 switch可以没有表达式switch 表达式{ case 表达式1,表达式2: 语句块1 case 表达式3,表达式4: 语句块2 default: 语句块 }
2.2 循环控制
for i:=1;j<=10;j++{
}
- for-range
str = "hahahaha" for index, val := range str { fmt.Printf("index=%d val=%c",index,val) }
三、函数
func 函数名 (形参列表) (返回值列表){
.....
return ....
}