9.1Go之分支结构和循环结构

9.1Go之分支结构和循环结构

Go的分支结构的特点

特点:

  • Go的分支和其他语言的分支并没有什么两样

if variable {
   
}
/**/
?
if {
   
}else if{
   
}else{
   
}

测试某个条件(布尔型或逻辑型)的语句,根据条件结果执行代码块里面的语句

特殊写法

特点:

将返回值与判断放在一行进行处理,而且返回值的作用范围被限制在 if、else 语句组合中。

示例:

package main
?
import "fmt"
?
func big(arr, brr int) bool {
if (arr - brr) > 0 {
return true
}else {
return false
}
}
?
func main() {
if err := big(3, 5); err != false {
fmt.Println(true)
return
}else {
fmt.Println(false)
return
}
}

代码分析:

  • big是一个带有返回值的函数,err:=big() 是一个语句,执行 Connect 后,将结果保存到 err 变量中。

  • err != false 是 if 的判断表达式,当 err 不为空时,打印错误并返回。

函数的变量作用域

变量的作用范围越小,所造成的问题可能性越小,每一个变量代表一个状态,有状态的地方,状态就会被修改,函数的局部变量只会影响一个函数的执行,但全局变量可能会影响所有代码的执行状态

限制变量的作用范围对代码的稳定性有很大的帮助

Go语言循环结构特点

特点:

  • Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近

常用的两种形式:

常规形式:

for i := 0; i < 10; i++ {
   
}

死循环形式:(相当于while(true))

for {
   
}
for i := 0;;i++ {
   
}

打印99乘法表

package main
?
import "fmt"
?
func main() {
/*处理第几行*/
for y := 1; y <= 9; y++ {
/*每一行生成多少列*/
for x := 1; x <= y; x++ {
//打印结果
fmt.Printf("%d*%d=%d\t", y, x, y*x)
}
//生成回车
fmt.Println()
}
}

Go语言之key-value循环

  • for range 是Go语言特有的一种的迭代结构,for range 可以遍历数组、切片、字符串、map 及通道(channel),for range 语法上类似于其它语言中的 foreach 语句

这里面涉及到了一个匿名变量的概念(使用"_"代替变量)

package main
?
import "fmt"
?
func main() {
/*声明一个映射*/
practice := map[string]string{
"name":"Jun",
"littleName":"JunkingBoy",
}
?
for j,k := range practice {
fmt.Println(j, k)
}
   /*
  for j,_ := range practice {
fmt.Println(j)
}
   */
}

特点:

  • for range为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值

遍历通道(channel):

package main
?
import "fmt"
?
func main() {
/*声明一个通道,放如整型数据*/
c := make(chan int)
?
go func() {
?
c <- 1
c <- 2
c <- 3
close(c)
}()
?
/*循环输出通道的值*/
for value := range c {
fmt.Println(value)
}
}

使用匿名变量只获得切片中的value而不是index

package main
?
import "fmt"
?
func main() {
/*声明一个数组*/
var num [10]int
?
/*循环添加值*/
for i := 0; i < len(num); i++ {
num[i] = (i+1)
}
?
/*循环打印出数组的value*/
for _, value := range num {
fmt.Println("Value is :", value)
}
}

9.1Go之分支结构和循环结构

上一篇:Qt中的Q_PROPERTY宏浅析


下一篇:超外差接收机