四、条件语句

if 语句
1
2
3
4
5
if contents,err := ioutil.ReadFile(filename);err != nil {
fmt.Println(err)
}else {
fmt.Printf("%s\n",contents)
}
  • if 的条件里可以赋值
  • if 的条件可以不用括号
  • if 的条件里赋值的变量作用域在 if 语句里
switch 语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
func grade(score int ) string {
g := ""
switch {
case score < 60:
g = "D"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
}
  • switch 会自动 break ,除非使用 fallthrough
  • switch 可以没有表达式
for 循环语句
  • for 的条件里不需要括号
  • for 的条件里可以省略初始条件,结束条件,递增表达式
  • 没有 while

五、函数

1
2
3
func div(a,b int) (q,r int) {
return a/b,a %b
}
  • func + 函数名
  • 可以返回多个值 (可以取名字,对调用者而言没有区别)
1
2
3
func apply(op func(int,int) int ,a,b int) int {
return op(a,b)
}
  • 函数当参数
  • 匿名函数
  • 可变参数列表 func sum(numbers … int)int{}

六、指针

  • 指针不能运算

七、参数传递

值传递

作为一种拷贝,值不会变

引用传递

不用拷贝,值会改变

  • golang 只有值传递