加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Go语言学习笔记(语法篇) - 控制结构

发布时间:2020-12-16 19:00:58 所属栏目:大数据 来源:网络整理
导读:Go语言的控制结构比Java、C语言都要少,只有很简单的几个,语法与也略有不同。 Go语言的保留关键字 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import ret

Go语言的控制结构比Java、C语言都要少,只有很简单的几个,语法与也略有不同。

Go语言的保留关键字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

运算符

* / %<< >> & &^+ - | ^ && || !

if

if中的条件不需要用中括号()给包含起来。

a := 1
b := 2
c := 3
if a < b && b < c {
fmt.Println(true)
} else {
fmt.Println(false)
}

而且if接受初始化语句,初始化的变量为一个局部变量。

if f,err := os.Open("c:/hello.go"); err == nil {
fmt.Println(f.Name())
} else {
fmt.Println(err)
}

goto

在Java里这是一个保留关键字,但没有任何实际作用。goto用不好容易造成程序的逻辑混乱。下面用Lable标识一个标签,goto可以将执行跳转到这个标签位置,注意标签是大小写敏感的。

func myfunc() {
i := 0
Lable:
fmt.Println(i)
i++
if i < 10 {
goto Lable
}
}

for

Go中没有while,do while循环,只有一个for,不过却可以完成各种灵活循环操作,同样也不需要中括号包含。
依旧有break,continue关键字,用法和其它语言一样。

func main() {
//跟Java相似的for循环
for i := 0; i < 10; i++ {
fmt.Println(i)
}
//与While一样
for false {
	
}
/死循环
for {
	
}  
Here:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
	fmt.Println(j)
	if j > 5 {
	break Here
	}
}
}
}

range

range可以用于对集合的循环,集合后面在继续学习,先看一下用range来遍历数组。

var ss []string = []string{"aaa","bbb","ccc","ddd"}
for i,v := range ss {
fmt.Printf("索引是%d,值是:%sn",i,v)
}


switch

Go的switch很灵活,不一定非要用常量,还支持表达式,下面一组代码片断是判断常量的。

func main() {
i := 0
switch i {
case 0:
//如果不加这个关键字,如果i等于0不会进到下面的case 1中
fallthrough
case 1:
fmt.Println(111)
}
}
func main() {
ch := 'b'
switch ch {
//多个值用逗号分隔
case 'a','b','c':
fmt.Println(111)
default:
fmt.Println(222)
}
}
下面这段代码是 case表达式的
func main() {
i := 10
switch {
case i < 10:
fmt.Println(111)
case i < 20:
fmt.Println(222)
default:
fmt.Println(333)
}
}
非常灵活、强大的switch,但是也给我带来一个疑问,Go的编译器怎么对switch进行编译优化呢,假如说一个switch其中有几百甚至上千个case,起不是要按照顺序一个一个去匹配,时间复杂度就变成O(N)了,常量的switch好处就是可以让时间复杂度变成O(1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读