前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言之旅:控制、循环

Go语言之旅:控制、循环

原创
作者头像
杨子翔 josonyang
发布2019-09-10 22:39:34
4960
发布2019-09-10 22:39:34
举报
文章被收录于专栏:子翔的专栏子翔的专栏

控制、循环这个是我们做逻辑的时候所必须的操作,在使用的层面并不太大区别,主要是一些使用注意事项。

if

if语句的基本上所有语言都统一的格式为

代码语言:txt
复制
if (x > max)  {
	x = max
}

但是go提供了一个去掉括号的写法

代码语言:txt
复制
if  x > max  {
	x = max
}

去掉了括号那么就可以在if后面的条件中添加定义和运算,比如这样

代码语言:txt
复制
if x := f(); x < y {
	return x
} else if x > z {
	return z
} else {
	return y
}

但如果说是这样写,就会报错

代码语言:txt
复制
if (x := f(); x < y) { // 语法错误

}

PS:例子引用自官方案例

swtich

swtich有两种格式,一种是表达式选择,一种是类型选择

代码语言:txt
复制
        switch processor.kind {
			case "create":
				creates = append(creates, processor)
			case "update":
				updates = append(updates, processor)
			case "delete":
				deletes = append(deletes, processor)
			case "query":
				queries = append(queries, processor)
			case "row_query":
				rowQueries = append(rowQueries, processor)
			}

类型表达式在判断类型中使用,这种方式也可以被改成if-else的表达方式

代码语言:txt
复制
func (u *UUID) Scan(src interface{}) error {
	switch src := src.(type) {
	case UUID: // support gorm convert from UUID to NullUUID
		*u = src
		return nil
	case []byte:
		*u = FromBytes(src)
		return nil
	case string:
		*u = FromString(src)
		return nil
	}
	return fmt.Errorf("uuid: cannot convert %T to UUID", src)
}

for

for循环跟if一样主要还是在for后面的表达式运算上不同

代码语言:txt
复制
package main
import "fmt"

func main() {
	for i := 0; i < 10; i++ {
		fmt.Printf("%d ", i)
	}
}

go里面没有while这种可以无限循环的关键字,只需要

代码语言:txt
复制
for { //这样就无限循环了
     break //一样用break来跳出
}

还有一个for...range...的非常常用,主要用来遍历数据集合来,比如这样

代码语言:txt
复制
var a [10]string
for i, s := range a {
	// type of i is int
	// type of s is string
	// s == a[i]
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • if
  • swtich
  • for
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档