go-控制语句

if else

else不能换行
if后最好不加小括号,当然可以加,但建议不加

求平方根

引入math包
调用math.Sqrt(num)函数

switch分支

不用加break来跳出,每一个case执行完会自动退出switch控制语句

    switch  key {
    case  'a':
        println("aaa")
    ......
   defaule:
       println("匹配不到会执行我")
}

case后是一个表达式
表达式的数据类型必须与科研一致,否则报错
case后还可以跟多个表达式,用逗号隔开
如果为常亮,所有case后的值不能重复,否则报错
switch后还可不带表达式,类似于if else 分支来使用

        i :=10
switch{
        case i==10  :  ..
        case i==20 : 
        ......
        default :
         println(“没有匹配到”)
}

switch后还可直接声明一个变量,分号结束 不推荐使用
switch穿透
在case后添加fallthrough,则会执行下一个case叫switch穿透
默认只能穿透一层
typestitch
switch还可被用于type-switch来判断interface变量中实际指向的变量类型

switch与if的比较

若判断的具体数值不多,数据类型为整数,浮点数,字符,字符串这几类用switch,简介高效
对区间判断和bool判断用if

for

和if一样可以不加小括号,返回值为bool类型

三种写法

一般写法
省略初始和步长
三者都省略
for ; ; {}是一个无限循环
一般配合break

for-range方便遍历字符串和数组

str = "abc~ok"
for  index, val  := range  str {
     fmt.printf("index = "%d, val = %c \n", index, val)
}

因为是按照字符遍历的所以有中文,也ok
而传统的是按字节遍历的,所以须将数组转为切片 eg: str := []rune(str)

go语言中没有while和do-while,可用foe循环来实现

//while
for{
  if  循环条件{
    break
}
循环操作
变量迭代
}
//do-while
for{
循环操作
变量迭代
  if  循环条件{
    break
}
}

多重循环

编程两大绝招
先易后难
复杂问题分解为简单问题
先死后活

break跳转语句

随机数

在go中生成随机数要生成一个随机种子,否则返回的数总是固定的

rand.Seed(time.Now().Unix())
fmt.Println("n",rand.Intn(100)+1)

基本功能

终止某个语句块

使用细节

当初现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

lable2 :
for{
   for{
   break lable2
}
}

lable只是一个标签名
默认会跳出最近的for循环

continue跳转控制

结束本次循环
用法和break一样也可以标签使用

goto跳转语句

无条件跳转到指定行,配合条件语句

if 条件 {
    goto lable2
}
...
....
lable2:
....

一般不主张使用

return

跳出所在方法或函数
普通函数
不再执行return后面的语句
main函数
终止main函数,即终止程序

猜你喜欢

转载自www.cnblogs.com/ygjzs/p/11779970.html