Go学习(五):流程控制

Go:常量&运算符&流程控制 在学习编程的过程中,掌握常量、运算符和流程控制是理解和使用任何编程语言的基础。对于Go语言,这些概念同样至关重要。通过本笔记,我们将详细介绍Go语言中的常量、运算符以及流程控制的相关知识,帮助读者在实际编程中灵活运用这些基本概念。 阅读详情

目录

条件语句if

条件语句switch

条件语句select(先学习channel)

循环语句for

循环语句range

循环控制goto、break、continue


条件语句if


   /* 判断条件 */
   if a == 100 {
       /* if 条件语句为 true 执行 */
       if b == 200 {
          /* if 条件语句为 true 执行 */
          fmt.Printf("a 的值为 100 , b 的值为 200\n" )
       }
   }

条件语句switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型

var x interface{}
    //写法一:
    switch i := x.(type) { // 带初始化语句
    case nil:
        fmt.Printf(" x 的类型 :%T\r\n", i)
    case int:
        fmt.Printf("x 是 int 型")
    case float64:
        fmt.Printf("x 是 float64 型")
    case func(int) float64:
        fmt.Printf("x 是 func(int) 型")
    case bool, string:
        fmt.Printf("x 是 bool 或 string 型")
    default:
        fmt.Printf("未知型")
    }

条件语句select(先学习channel)

循环语句for

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

for i, n := 0, len(s); i < n; i++ { // 常见的 for 循环,支持初始化语句。
    println(s[i])
}
for n > 0 {                // 替代 while (n > 0) {}
    println(s[n])        // 替代 for (; n > 0;) {}
    n-- 
}
for {                    // 替代 while (true) {}
    println(s)            // 替代 for (;;) {}
}

循环语句range

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

range 会复制对象,值拷贝

package main

import "fmt"

func main() {
    a := [3]int{0, 1, 2}

    for i, v := range a { // index、value 都是从复制品中取出。

        if i == 0 { // 在修改前,我们先修改原数组。
            a[1], a[2] = 999, 999
            fmt.Println(a) // 确认修改有效,输出 [0, 999, 999]。
        }

        a[i] = v + 100 // 使用复制品中取出的 value 修改原数组。

    }

    fmt.Println(a) // 输出 [100, 101, 102]。
}
//[0 999 999]
//[100 101 102]

 map、channel 是指针包装,而不像 slice 是 struct。

package main

func main() {
    s := []int{1, 2, 3, 4, 5}

    for i, v := range s { // 复制 struct slice { pointer, len, cap }。

        if i == 0 {
            s = s[:3]  // 对 slice 的修改,不会影响 range。
            s[2] = 100 // 对底层数据的修改。
        }

        println(i, v)
    }
}

for 和 for range的区别

for range可以完成所有for可以做的事情,却能做到for不能做的,包括

1、遍历key为string类型的map并同时获取key和value

2、遍历channel

循环控制goto、break、continue

 1.三个语句都可以配合标签(label)使用
    2.标签名区分大小写,定以后若不使用会造成编译错误
    3.continue、break配合标签(label)可用于多层循环跳出
    4.goto是调整执行位置,与continue、break配合标签(label)的结果并不相同

golang 编程规范 - Effective Go 中文 Go 是一门全新的语言。尽管它从现有的语言中借鉴了许多思想,但其与众不同的特性,使得用 Go 编程在本质上就不同于其它语言。将现有的 C++ 或 Java 程序直译为 Go 程序并不能令人满意 —— 毕竟 Java 程序是用 Java 编写的,而不是 Go。另一方面,若从 Go 的角度去分析问题,你就能编写出同样可行但大不相同的程序。换句话说,要想将 Go 程序写得好,就必须理解其特性和风格。了解命名格式化程序结构等既定规则也同样重要,这样你编写的程序才能更容易被其他程序员所理解。 阅读详情

相关推荐

Golang基础:流程控制详解

本文介绍了Golang中常用的流程控制语句,包括if语句、for循环、switch语句和select语句的基本使用方法。以上是关于Golang基础中流程控制的介绍,详细说明了每种语句的用法,并提供了相应的代码示例。通过学习和实践,您可以更好地理解和运用Golang中的流程控制,开发出高效可靠的程序。Golang是一门简洁高效的编程语言,具有强大的并发能力和丰富的标准库。本文将详细介绍Golang中常用的流程控制语句,并提供相应的代码示例。以上代码中,我们省略了循环条件,使得循环成为无限循环。

syntax_bug609的博客 121

Go学习(五):流程控制

1.条件判断(if) 1.1 if 1.语法结构 if 布尔表达式 {  // 布尔表达式为true时执行} 2. 使用 a := 10if a  > 3{  fmt.Println("a > 3 为true")} 1.2 if...else 1.语法结构 if 布尔表达式 {  // 

weixin_39001207的博客 167

Sylvester结式法求解多项式方程

Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp

u010883831的博客 4533

Go-Golang学习总结笔记

资源 某hub会审核不通过,自己去找吧 书籍 网站 基础 go官方中文网 菜鸟教程 C语言网 go语言中文网 golang系列 视频 基础 安装 依赖管理 数据类型 变量和常量 流程控制 函数 包 面向对象编程 提高 ...

关注网络安全、云原生安全 2万+

模仿学习算法——ATC / Diffusion Policy

最近又开始接触具身智能相关的一些工作,本文主要介绍三篇较为基础的用来做模仿学习的算法,后续有空再进一步学习分享RT系列和Pi0等文章ACT算法全称为Action Chunking with Transformers,发表于《Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware》,该论文主要内容为如何使用低成本的硬件和模仿学习算法来实的双手操作,我们主要对算法部分进行剖析ACT算法的网络结构如下图所示,使用的采用的是生成式模型VA

weixin_44580210的博客 5251

别再只跑memtester了!嵌入式Linux内存压力测试,这5个参数和场景你试过吗?

本文深入探讨了嵌入式Linux内存压力测试的高级技巧,重点解析了memtester工具的5个关键参数和实战场景。通过物理地址测试、迭代控制、内存分配策略等调优方法,帮助开发者有效检测内存稳定性问题,适用于长期运行设备、特定故障重现等复杂场景,提升嵌入式系统可靠性。

weixin_30838873的博客 424

【吐血整理】超全golang面试题合集+golang学习指南+golang知识图谱+成长路线 一份涵盖大部分golang程序员所需要掌握的核心知识。

由于外链问题,完整版可【点击】阅读原文或到 github项目 中,欢迎关注。 目录(善用Ctrl+F) 基础入门 新手 Golang开发新手常犯的50个错误 数据类型 连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。 golang面试题:字符串转成byte数组,会发生内存拷贝吗? golang面试题:翻转含有中文、数字、英文字母的字符串 golang面试题:拷贝大切片一定比小切片代价大吗? map不初始化使用会怎么样 map不初始化长度和初始化长度的区别 map承载多大,..

ilini的博客 5991

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

Matlab+Yalmip两阶段鲁棒优化通用编程指南(上篇),内容包括: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

配电网和matlab的博客 1万+

【Go语言学习系列04】Go基础语法(二):流程控制

全面讲解Go语言流程控制结构,包括if、switch、for循环的特殊用法,以及break、continue和goto的最佳实践

GopherTribe的博客 1061

华为Watch的ECG功能技术分析

华为Watch的ECG(心电图)功能通过硬件传感器、算法优化和医疗认证的结合,实现了对心脏电活动的监测和房颤(AFib)等心律失常的预警。采用医疗级ECG模拟前端芯片(AFE),如TI(德州仪器)的ADS1292R等,支持低噪声、高采样率(通常≥200Hz)。结合PPG(光学心率)数据交叉验证,提高检测可靠性(如ECG和PPG心率不一致时触发警告)。通过RR间期变异性判断心律是否规则,识别房颤(AFib)的典型特征(如不规则不规则心律)。结合加速度计数据,识别手臂运动导致的信号失真,动态调整算法参数。

xu_wenming的博客 6442

零基础玩转STM32CubeIDE LL库:5分钟搞定串口通信(附完整代码)

本文为零基础开发者提供了一份STM32CubeIDE LL库串口通信的快速实战指南。通过CubeMX配置、LL库核心API详解,以及中断接收与环形缓冲区的完整代码实现,帮助读者在5分钟内搭建稳定可靠的串口收发框架,解决从HAL切换到LL库的常见困惑,提升嵌入式开发效率。

weixin_29159441的博客 306

Go语言学习笔记—golang流程控制

Go语言中的流程控制

qq_39280718的博客 471

背靠背VSC直流母线电压控制与同步发电机并网发散问题:原理、分析与解决方案

背靠背VSC直流母线电压控制与同步发电机并网发散问题分析 摘要: 本文研究了背靠背VSC系统在整流侧由理想三相电源切换为同步发电机时出现的直流母线电压振荡和发散问题。通过理论分析发现,锁相环同步失稳、等效阻抗失配和直流母线电容参数失配是导致系统失稳的关键因素。当整流侧接入同步发电机后,系统形成正反馈振荡回路,同时等效电感增大导致电流环响应速度降低,直流侧电容容量不足无法吸收发电机功率波动。文章提出了从跟网型控制到构网型VSG控制的完整升级方案,包含详细的MATLAB/Simulink建模和控制算法实现,并通

huanghm88的专栏 122

Go语言学习15-基本流程控制

Go语言流程控制方法(基本流程控制: if , for , switch , goto)

Huazie 3291

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

go学习之流程控制语句

在程序中,程序运行的流程控制决定程序如何执行的,是我们应该掌握的,主要有三大流程控制语句。

weixin_55418082的博客 1062

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

100天精通Golang:全面掌握Go语言的旅程

本文介绍了一个全面的100天计划,旨在帮助读者快速、系统地掌握Go语言。这个计划分为四个阶段,从基础知识到高级应用,每个阶段都有特定的学习目标和内容。在第一阶段中,我们将学习Go的基本概念、语法和开发工具,并通过编写简单的程序来巩固所学知识。在当今快节奏的软件开发世界中,快速而有效地学习一门新的编程语言对开发人员来说至关重要。其中一门赢得了极大流行的语言就是Go(Golang)。凭借其简洁性、高效性和对并发的强大支持,Go已成为构建可伸缩和高性能应用程序的首选语言。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 5万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GO语言学习之字符串和流程控制

go语言基础

2402_88103396的博客 1121

Golang学习历程【第四篇 运算符&流程控制】

一个编程爱好者的Golang学习历程

互联网编程爱好者 1122

Go语言学习16-特殊流程控制

Go语言流程控制方法(defer ,error , panic , recover)

Huazie 1568

50周学习go语言:第三周 流程控制与FizzBuzz实现

通过这两个详细示例和多种实现版本,你可以更深入地掌握Go的流程控制机制。建议在本地实际运行每个示例,并尝试修改参数观察不同结果,这是理解控制结构的最佳方式。错误示例:先判断3的倍数再判断5的倍数,导致15的倍数显示Fizz而不是FizzBuzz。完成本练习后,你将熟练掌握Go语言的流程控制结构,能够处理各种条件判断和循环场景。

weixin_42771529的博客 1047

Golang学习手册

安装非常简单,直接默认安装就行;最新版的不需要到windows的电脑属性中去设置GOPATH 安装成功后,在cmd下设置 // 默认GO111MODULE 是关闭的 go env -w GO111MODULE=on 新建项目的开发目录,如在d:\golang下面新建的项目文件夹,每个文件夹就属于一个项目 // d:\golang mkdir firstDemo cd firstDemo // 通过go mod 来管理 go mod init firstDemo // 会在当前下面生成go.mod 文件

book_longker的专栏 5809

【golang学习总结】6 golang流程控制

一篇带你入门golang框架精髓的博客,图文并茂,火速三连!

冰冻三尺,非一日之寒 415

Golang极速入门课五,流程控制

实际工作中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句,也有很多的校验需要通过条件判断进行,这将是绕不开的语法 ,但是也是清晰明了的语法、当我们熟悉后,才可以去运用,在不断学习中提高自己。

猫轻王的博客 415

Golang基础学习(七)流程控制

流程控制 三大流程控制 顺序控制 分支控制 循环控制 顺序控制 程序从上到下逐行执行,中间没有判断和跳转 Golang中定义变量采用合法的前向引用。先声明,后使用。 分支控制 让程序有选择的执行 单分支 双分支 多分支 单分支 if 条件表达式{ 代码块 } 条件表达式为true时执行代码块,条件表达式中支持定义变量 {}不能省略 双分支 if 条件表达式{ 代码块1 ...

Clare Tung 479

2024年Go最全【golang基础教程(持续更新ing)】_golang教程(4),覆盖所有面试知识点

fmt.Printf(“%d 的阶乘是 %d\n”, i, Factorial(uint64(i)))// 跨越 case 的 fallthrough——兼容C语言的 case 设计。另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。在 continue 语句后添加标签时,表示开始标签对应的循环,拷贝后的参数任然指向底层数据结构 可能会改变原来的数据结构的值。

2401_84920056的博客 1115
上一篇: Go学习(四):golang连接mysql数据库查询数据库信息
下一篇: Go学习(六):函数
Lay_XZ
博客等级 码龄5年 29粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值