Go语言语法基础(二)
- 1. 条件查询
- 2. 循环
- 2.1 for
- 3. 函数
- 4. 指针
1. 条件查询
1.1 if
- if的条件里不需要括号
- if的条件里可以赋值
- if的提哦啊见里赋值的变量作用域就在这个if语句里
if contents, err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
1.2 switch
- switch会自动break,除非使用fallthrough
- switch后可以没有表达式
switch {
case score < 0 || score > 100:
panic(fmt.Sprintf(
"Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
2. 循环
2.1 for
- for的条件里不需要括号
- for的条件里可以省略初始条件,结束条件、递增表达式
for ; n > 0; n /= 2 {
lsb := n % 2
result = strconv.Itoa(lsb) + result
}
for scanner.Scan() {
fmt.Println(scanner.Text())
}
for {
fmt.Println("abc")
}
3. 函数
func div(a, b int) (int int) {
return a / b, a % b
}
- 函数返回多个值时可以起名字
- 仅用于非常简单的函数
- 对调用者没有区别
func div(a, b int) (q, r int) {
q = a / b
r = a % b
return
}
func apply(op func(int, int) int, a, b int) int {
p := reflect.ValueOf(op).Pointer()
opName := runtime.FuncForPC(p).Name()
fmt.Printf("Calling function %s with args "+
"(%d, %d)\n", opName, a, b)
return op(a, b)
}
func sum(numbers ...int) int {
s := 0
for i := range numbers {
s += numbers[i]
}
return s
}
4. 指针
- 指针不能运算
- 值传递,引用传递?go语言只有值传递一种