Go常见语句

Posted 01black-white

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go常见语句相关的知识,希望对你有一定的参考价值。

集中常见的条件判断语句

语句描述
if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句 你可以在 ifelse if 语句中嵌入一个或多个 ifelse if 语句。
switch 语句 switch 语句用于基于不同条件执行不同动作。
select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

**与C语言等不同的是在if后面的布尔表达式没有括号
eg:
package main

import "fmt"

func main() {
    var a int = 10
    var b float32 = 10.1

    if a < 20 {
        fmt.Println("a 小于 20 ")
    }
    fmt.Println("a,b的值为: %d,%f ", a, b)
}



switch语句语法:
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}


select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。

select语句语法:
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s); 
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}
    • 每个case都必须是一个通信
    • 所有channel表达式都会被求值
    • 所有被发送的表达式都会被求值
    • 如果任意某个通信可以进行,它就执行;其他被忽略。
    • 如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。
      否则:
      1. 如果有default子句,则执行该语句。
      2. 如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
eg:

package main

import "fmt"

func main() {
    var c1, c2, c3 chan int
    var i1, i2 int
    select {
    case i1 = <-c1:
        fmt.Printf("received", i1, "from c1 ")
    case c2 <- i2:
        fmt.Printf("sent ", i2, "to c2 ")
    case i3, ok := (<-c3):
        if ok {
            fmt.Printf("received ", i3, "from c3 ")
        } else {
            fmt.Printf("c3 is closed ")

        }
    default:
        fmt.Printf("no communication ")

    }
}
结果为:
    no communication


循环语句:
循环类型描述
for 循环 重复执行语句块
循环嵌套

在 for 循环中嵌套一个或多个 for 循环

控制语句描述
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句 将控制转移到被标记的语句。

goto 语法格式如下:

goto label;
..
.
label: statement;



eg :
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d
", a)
      a++     
   }  
}





































































以上是关于Go常见语句的主要内容,如果未能解决你的问题,请参考以下文章

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

常见的代码片段

Alfred常见使用

golang代码片段(摘抄)

Go十大常见错误第8篇:并发编程中Context使用常见错误