设为首页 加入收藏

TOP

Go语言学习笔记(二)十分钟上手(二)
2017-09-30 13:26:58 】 浏览:9613
Tags:语言学习 笔记 十分钟 上手
sp;

流程控制

If/else & for & range

注意 else if / else 位置

if condition1 {
} else if condition2 {
} else if condition3 {?
} else {
}

for循环条件没有小括号

for i := 0; i < 10; i++ {
}

死循环

for true {
}
可以简写为:
for {
}

range

for i, v := range str {
}
package main

import (
    "fmt"
)

func ran(str string) {
    for i, v := range str {
        fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
    }
}

func main() {
    ran("Love, 索宁")
}


输出结果:
index[0] val[L] len[1]
index[1] val[o] len[1]
index[2] val[v] len[1]
index[3] val[e] len[1]
index[4] val[,] len[1]
index[5] val[ ] len[1]
index[6] val[索] len[3]
index[9] val[宁] len[3]
range栗子

 

switch case

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch。

switch var {
case var1:
case var2:
case var3:
default:
}
func sw(num int) {
    switch num {
    case 1, 2, 3:
        fmt.Printf("%s in 1,2,3\n", num)
    case 4, 5, 6:
        fmt.Printf("%s in 4,5,6\n", num)
        fallthrough
    case 7, 8, 9:
        fmt.Printf("%s big 789\n", num)
    default:
        fmt.Printf("default...\n")
    }
}
switch 栗子一
func sw2(num int) {
    switch {
    case num > 0 && num < 4:
        fmt.Printf("%s in 1,2,3\n", num)
    case num > 4 && num < 7:
        fmt.Printf("%s in 4,5,6\n", num)
        fallthrough
    case num > 7 && num < 10:
        fmt.Printf("%s big 789\n", num)
    default:
        fmt.Printf("default...\n")
    }
}
switch 栗子二
func sw3() {
    switch num := 5; {
    case num > 0 && num < 4:
        fmt.Printf("%s in 1,2,3\n", num)
    case num > 4 && num < 7:
        fmt.Printf("%s in 4,5,6\n", num)
        fallthrough
    case num > 7 && num < 10:
        fmt.Printf("%s big 789\n", num)
    default:
        fmt.Printf("default...\n")
    }
}
switch 栗子三

fallthrough

可以使用fallthrough强制执行后面的case代码。 

package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("The integer was <= 4")
            fallthrough
    case true:
            fmt.Println("The integer was <= 5")
            fallthrough
    case false:
            fmt.Println("The integer was <= 6")
            fallthrough
    case true:
            fmt.Println("The integer was <= 7")
    case false:
            fmt.Println("The integer was <= 8")
            fallthrough
    default:
            fmt.Println("default case")
    }
}


运行结果:

The integer was <= 5
The integer was <= 6
The integer was <= 7
fallthrough栗子

 

label & goto

label要写在for循环的开始而不是结束的地方。直接break退出到指定的位置。

func lab() {
LABLE:
    for i := 0; i < 10; i++ {
        for true {
            i++
            if i == 6 {
                break LABLE
            }
            fmt.Println(i)
        }
    }
}

 goto语句可以跳转到本函数内的某个标签

func got() {
    i := 0
HERE:
    fmt.Println(i)
    i++
    if i == 5 {
        return
    }
    goto HERE
}

 

select

select与switch类似,不过select有较多限制。

每个case语句里必须是一个channel操作;

select {
case ch <- 0:
    //如果0写入,则进行该case
case <- ch:
    //如果读到数据,则进行该case
default:
    //如果上面的都没有成功,则进入default处理
}
package main

import (
    "fmt"
    "time"
)

/*
随机向ch中写入一个0或者1的过程,当然这是个死循环。
*/

func main() {
    ch := make(chan int, 1)
    for {
        select {
        case ch <- 0:
        case ch <- 1:
        }
        i := <-ch
        fmt.Println(i
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Go语言学习笔记(一)Let's .. 下一篇Go语言学习笔记(三)数组 & 切片..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目