栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

【Go语言之路 基础篇】Go语言的条件控制语句和循环控制语句 if for

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Go语言之路 基础篇】Go语言的条件控制语句和循环控制语句 if for

if语句

go语言的常用控制流程有if和for,没有while, 而switch和goto是为了简化代码,降低重复代码,属于扩展的流程控制。
if语句的结构:

if 布尔表达式 {
   
}

if 布尔表达式 {
   
} else {
  
}

if 布尔表达式1 {
   
} else if 布尔表达式2{
   
} else{
   
}
package main

import "fmt"

func main() {
	// if 语句
	num := 12
	if num%2 == 0 {
		fmt.Println("偶数")
	} else {
		fmt.Println("奇数")
	}

	score := 95
	if score >= 90 {
		fmt.Println("优秀")
	} else if score >= 80 {
		fmt.Println("良好")
	} else if score >= 60 {
		fmt.Println("合格")
	} else {
		fmt.Println("不合格")
	}
}

if还有一个变体也很常用

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even") 
    }  else {
        fmt.Println(num,"is odd")
    }
}
if err := Connect(); err != nil {
    
}

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

提示:
在编程中,变量在其实现了变量的功能后 ,作用范围越小 ,所造成的问题可能性越小,每一个变量代表一个状态,有状态的地方,状态就会被修改,函数的局部变量只会影响一个函数的执行, 但全局变量可能会影响所有代码的执行状态,因此限制变量的作用范围对代码的稳定性有很大的帮助 。

package main

import (
	"errors"
	"fmt"
)

func test() error {
	return errors.New("error")
}

func main() {
	if err := test(); err != nil {
		fmt.Println("error happen")
	}
	fmt.Println(err) //此处会报错
}
for 循环

Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。

//和 C 语言的 for 一样:
for init; condition; post { }
//和 C 的 while 一样:
for condition { }
//和 C 的 for(;;) 一样:
for { }
  • init: 一般为赋值表达式,给控制变量赋初值;
  • condition: 关系表达式或逻辑表达式,循环控制条件;
  • post: 一般为赋值表达式,给控制变量增量或减量。

for语句执行过程如下:

  1. 先对表达式 1 赋初值;
  2. 判别赋值表达式 init 是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行 post,进入第二次循环,再判别 condition;否则判断 condition 的值为假,不满足条件,就终止for循环,执行循环体外语句。

sum := 0
for i := 1; i <= 10; i++ {
	sum += i
}
fmt.Println(sum)

死循环:

for {
	fmt.Println("A")
}

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}
package main
import "fmt"

func main() {
		name := "hello world"
		for key, value := range name {
			// value 是ascii 
			fmt.Printf("index:%d, value:%cn", key, value)
		}
		// 1.name是一个字符串,2.字符串是字符串的数组
		//index:0, value:h
		//index:1, value:e
		//index:2, value:l
		//index:3, value:l
		//index:4, value:o
		//index:5, value:
		//index:6, value:w
		//index:7, value:o
		
        strings := []string{"bobby", "imooc"}
        for i, s := range strings {
                fmt.Println(i, s)
        }
        //0 bobby
		//1 imooc


        numbers := [6]int{1, 2, 3, 5}
        for i,x := range numbers {
                fmt.Printf("第 %d 位 x 的值 = %dn", i,x)
        }
}

汉字问题:

name := "你好go"

//fmt.Printf("%cn", name[0])
for key, value := range name {
	fmt.Printf("index:%d, value:%cn", key, value)
}
//index:0, value:你
//index:3, value:好
//index:6, value:g
//index:7, value:o
name_arr := []rune(name)
for i := 0; i < len(name_arr); i++ {
	fmt.Printf("value:%cn", name_arr[i])
}
//value:你         
//value:好         
//value:g          
//value:o 
// 在做字符串遍历的时候尽量使用range
  1. name是一个字符串
  2. 字符串是字符串的数组
  3. 在做字符串遍历的时候尽量使用range
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号