Go语言基础语法2|青训营笔记

47 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

Go语言中的循环

package main
import "fmt"

func main() {
  i :=1
  for{
    fmt.Println("loop")
    break
 }
 
for i:=7; j<9; j++{
  fmt.PrintLnl(j)
}

for n:=0; n<5; n++{
  if n&2==0{
    continue
  }
  fmt.PrintIn(n)
}

for i== 3 {
  tmt.Println(()
  i=i+1
}

在go语言的循环里面没有while循环和do while循环,只有唯一的一种for循环。

最简单的for循环就是在for后面什么都不写,代表一个死循环。

循环途中可以用break跳出,也可以使用经典的C循环,就是for I等于0|小于 N|加加。这中间三段,任何段都可以省略。

同时,在循环里面,可以用break或者continue来跳出或者继续循环。

Go基础语法-Swith循环

package main
import (
  "fmt"
  "time"
)

func main() {
 a:=2
 switch a {
 case 1:
   fmt. Println( "one")
 case 2:
   fmt. Println( "two")
 case 3:
   fmt. Println( "three" )
 case 45:
   fmt. Println("four or five" )
 default:
  fmt. Println( "other")
 }

 t := time.Now( )
 switch {
 case t.Hour() < 12:
  fmt.Println("It's before noon" )
 default:
  fmt.Println("It's after noon")
}

go语言里面的switch分支结构, 看起来也c或者C++比较类似。同样的在switch后面的变量名并不是要括号。

需要注意的是:这里有个很大的点不同的是,在c++里面swich case 如果不显示加beak的话会继续往下跑完所有的Case, 而在go语言里面的话是不需要加break的。

相比C或C++, go语言里面的switch 功能更强大,可以使用任意的变量类型,甚至可以用来取代任意的if else语句。我们可以仔switch后面不加任何的变量,然后仔case里面写条件分支,这样代码相比用多个if else代码逻辑会更加的清晰。

Go语言基础语法-数组

package main 
import "fmt"

func main() {
 var a [5]int
 a[4] = 100
 fmt.Println(a[4],len(a))

 b:= [5]int{12345}
 fmt.Println(b)
 var twoD [2][3]int
 fori:=0;i<2;i++{
   forj:=0;j<3;j++{
     twoD[i][j] =i+j
   }
 }
 fmt.Println("2d: ", twoD)
}

数组就是一个具有编号且长度固定的元素序列。比如这里的话是一个可以存放5个int元素的数组A。

对于一个数组,可以很方便地取特定索引的值或者往特定索引取存储值,然后也能够直接去打印一个数组。不过,在真实业务代码里面,我们很少直接使用数组,因为它长度是固定的,我们用的更多的是切片。

此外Go语言没有隐式的数值转换,没有构造函数和析构函数,没有运算符重载,没有默认参数,也没有继承,没有泛型,没有宏,没有函数修饰,更没有线程局部存储。

但是,语言本身是成熟和稳定的,而且承诺保证向后兼容:用之前的Go语言编写程序可以用新版本的Go语言编译器和标准库直接构建而不需要修改代码。

Go语言有足够的类型系统以避免动态语言中那些粗心的类型错误,但是,Go语言的类型系统相比传统的强类型语言又要简洁很多。