【Go编程语言】流程控制

这篇具有很好参考价值的文章主要介绍了【Go编程语言】流程控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

流程控制



【Go编程语言】流程控制


程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构

【Go编程语言】流程控制

  • 顺序结构:从上到下,逐行执行。默认的逻辑

  • 选择结构:条件满足某些代码才会执行

    • if

    • switch

    • select ,后面 channel 再讲

  • 循环结构:条件满足某些代码会被反复执行0-N次

    • for

一、if 语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为false的情况在执行另外的语句。

下图展示了程序语言中条件语句的结构:
【Go编程语言】流程控制

package main

import "fmt"

func main() {
	// 分数
	var score int = 66

	if score >= 90 && score <= 100 {
		fmt.Println("优秀")
	} else if score >= 80 && score < 90 {
		fmt.Println("良好")
	} else if score >= 60 && score < 80 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

}

输出
【Go编程语言】流程控制

1.if 嵌套语句

if 布尔表社式 1 {
	/* 在布尔表达式 1 为 true 3:执行 */
	if 布尔表达式 2 {
		/* 在布尔表达式 2 true 时执行 */
	}
}
package main

import "fmt"

func main() {
	var one, two int
	// 初始密码
	var pwd int = 12345678
	// 接收用户输入密码
	fmt.Print("请输入密码:")
	fmt.Scan(&one)

	// 功能:验证密码是否正确
	if one == pwd {
		fmt.Print("请再次输入密码:")
		fmt.Scan(&two)
		if two == pwd {
			fmt.Println("登录成功")
		} else {
			fmt.Println("第二次输入密码错误,登录失败,请重新输入密码……")
		}
	} else {
		fmt.Println("输入密码错误,登录失败,请重新输入密码……")
	}

}

输出
【Go编程语言】流程控制

二、switch 语句

switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch var1 { 
	case test1:
		...
	case test2:
		...		
	defauIt:
		...
}

switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break.。switch默认情况下 case 最后自带 break 语句

package main

import "fmt"

func main() {
	var score string = "D"
	
	// 匹配
	switch score {
	case "A":
		fmt.Println("等级为A,成绩在90~100范围内")
	case "B":
		fmt.Println("等级为B,成绩在80~90范围内")
	case "C":
		fmt.Println("等级为C,成绩在60~79范围内")
	default:
		fmt.Println("等级为D,成绩在0~59范围内")

	}
	// switch 默认条件 bool = true
	switch {
	case false:
		fmt.Println("false")
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
【Go编程语言】流程控制

fallthrough 贯穿,直通

switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用 fallthrough 穿透case使用 fallthrough 会强制执行后面的 case 语句,fallthrough不会判断下条case的表达结果是否为true.

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
【Go编程语言】流程控制

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		if a == false {
			break // 终止 case 穿透
		}
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
【Go编程语言】流程控制

三、for 循环

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。for 循环是一个循环控制结构,可以执行指定次数的循环。

package main

import "fmt"

func main() {
	// for 条件的起始值;循环条件;控制变量自增或自减
	// for ;循环条件;
	// for {} 无限循环
	i := 1
	for {
		fmt.Println(i)
		i++
	}
	sum := 0
	// for 给控制变量赋值初值,循环条件给控制变量增量或减量\

	// 计算 1 到 10 的数字之和
	for i := 1; i <= 10; i++ {
		// 循环体
		sum += i

	}
	fmt.Println(sum)
}

栗子:输出一个10*10的方阵

package main

import "fmt"

func main() {
	// i 控制行, j 控制列 
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			fmt.Print("* ")
		}
		fmt.Println()
	}

}

输出
【Go编程语言】流程控制
栗子:九九乘法表

package main

import "fmt"

func main() {
	// i 控制行, j 控制列
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d \t", j, i, j*i)
		}
		fmt.Println()
	}

}

输出
【Go编程语言】流程控制

break 结束当前整个循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			break
		}
		fmt.Println(i)
	}


}

continue 结束本次循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			continue
		}
		fmt.Println(i)
	}


}

输出
【Go编程语言】流程控制

四、string

什么是String

Go中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 编码。字符串是一些字节的集合。

package main

import "fmt"

func main() {

	str := "hello,guan"
	fmt.Println(str)

	// 获取字符串的长度 len
	fmt.Println("字符串长度为:", len(str))

	// 获取指定的字节
	fmt.Println("字节打印:", str[4])
	fmt.Printf("%c", str[4])
	fmt.Println()

	for i := 0; i < len(str); i++ {
		fmt.Printf("%c\n", str[i])
	}

	// for range 循环,遍历数组、切片....
	// 返回下标和对应的值,使用这个值就行了
	for i, v := range str {
		fmt.Print(i)
		fmt.Print("--")
		fmt.Printf("%c", v)
		fmt.Println()
	}

}

【Go编程语言】流程控制文章来源地址https://www.toymoban.com/news/detail-461864.html

到了这里,关于【Go编程语言】流程控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言网络编程(socket编程)http编程

    Web服务器的工作原理可以简单地归纳为 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“

    2024年02月09日
    浏览(70)
  • Go语言网络编程(socket编程)WebSocket编程

    WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据 在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输 需要安装第

    2024年02月09日
    浏览(77)
  • 【30天熟悉Go语言】7 Go流程控制之分支结构if、switch

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 3 Go编程规约和API包 4 Go的变量、常量、运算符 5 Go 基本数据类型 6 Go 复杂数据类型之指针 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html if 语句由布尔表达式后紧跟一个或多个语句组

    2024年02月09日
    浏览(38)
  • GO语言网络编程(并发编程)Channel

    1.1.1 Channel 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势

    2024年02月09日
    浏览(72)
  • GO语言网络编程(并发编程)select

    1.1.1 select多路复用 在某些场景下我们需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。你也许会写出如下代码使用遍历的方式来实现: 这种方式虽然可以实现从多个通道接收值的需求,但是运行性能会差很多。为了应对这种场景,G

    2024年02月09日
    浏览(90)
  • Go语言网络编程(socket编程)TCP

    TCP协议 TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。 TCP服务端 一个TCP服务端可以同时连接很

    2024年02月09日
    浏览(58)
  • GO语言网络编程(并发编程)runtime包

    1.1.1. runtime.Gosched() 让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见面就黄不耽误你继续烧烤,第二种情况就是你相亲速度特别慢,见面就是你侬我侬的,耽误了烧烤,但是还馋就

    2024年02月09日
    浏览(71)
  • 掌握Go语言:Go语言通道,并发编程的利器与应用实例(20)

    通道(Channel)是用来在 Go 程序中传递数据的一种数据结构。它是一种类型安全的、并发安全的、阻塞式的数据传输方式,用于在不同的 Go 协程之间传递消息。 基本概念 创建通道 :使用 make() 函数创建一个通道。 发送数据 :使用 - 操作符向通道发送数据。 接收数据 :使用

    2024年03月21日
    浏览(59)
  • Go语言和Java编程语言的主要区别

    目录 1.设计理念: 2.语法: 3.性能: 4.并发性: 5.内存管理: 6.标准库: 7.社区和支持: 8.应用领域:         Go(也称为Golang)和Java是两种不同的编程语言,它们在设计理念、语法、性能、并发性等方面存在许多区别。以下是它们之间的一些主要区别:         Go语

    2024年04月17日
    浏览(71)
  • Go语言面向对象编程

    注:安装教程 上一篇 1.1、简单实例 1.2、指针 1、Go语言中的面向对象最为直观,也无需支付额外的成本。如果要求对象必须以指针传递,这有时会是个额外成本,因为对象有时很小(比如4字节),用指针传递并不划算。 只有在你需要修改对象的时候,才必须用指针。它不是

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包