当前位置: 首页 > news >正文

【go】 if条件控制语句

Go 语言中的 if 条件控制语句用于根据条件判断执行不同的代码块。它支持基本条件判断、带初始化语句的 ifif-elseif-else if-else 结构,以及嵌套 if。下面我们逐一介绍并给出代码示例。

一、基本 if 语句

语法结构:

if condition {// 当 condition 为 true 时执行
}

示例:

package main
import "fmt"
func main() {age := 18if age >= 18 {fmt.Println("成年人")}
}

输出:

成年人

二、if-else 语句

语法结构:

if condition {// 条件为 true 时执行
} else {// 条件为 false 时执行
}

示例:

package main
import "fmt"
func main() {age := 16if age >= 18 {fmt.Println("成年人")} else {fmt.Println("未成年")}
}

输出:

未成年

三、if-else if-else 多条件判断

语法结构:

if condition1 {// condition1 为 true 时执行
} else if condition2 {// condition2 为 true 时执行
} else {// 都不满足时执行
}

示例:

package main
import "fmt"
func main() {score := 85if score >= 90 {fmt.Println("优秀")} else if score >= 80 {fmt.Println("良好")} else if score >= 60 {fmt.Println("及格")} else {fmt.Println("不及格")}
}

输出:

良好

四、带初始化语句的 if

Go 支持在 if 语句中初始化变量,这些变量的作用域仅限于 if 块。
语法结构:

if stmt; condition {// 使用 stmt 初始化的变量
}

示例:

package main
import "fmt"
func main() {if x := 10; x > 5 {fmt.Println("x 大于 5")}// fmt.Println(x) // 编译错误,x 的作用域仅限于 if 块
}

输出:

x 大于 5

五、嵌套 if 语句

可以在一个 if 块中再嵌套另一个 if 语句。
示例:

package main
import "fmt"
func main() {age := 22if age >= 18 {if age >= 60 {fmt.Println("老年人")} else {fmt.Println("青年人")}} else {fmt.Println("未成年")}
}

输出:

青年人

六、注意事项

  1. 条件表达式必须为布尔类型:Go 是强类型语言,if 的条件必须是 bool 类型,不能像 C 语言那样用整数值表示真假。
    // 错误示例
    if 1 { // 编译错误fmt.Println("true")
    }
    
  2. {} 必须成对出现且位置固定:Go 不允许将 { 放在下一行,必须紧跟在条件之后。
    // 错误示例
    if age > 18
    { // 编译错误fmt.Println("adult")
    }
    
  3. 变量作用域:带初始化的 if 中定义的变量,作用域仅限于该 if 块。

七、总结

Go 的 if 条件控制语句简洁而强大,支持多种判断结构和初始化语句。其语法严格,有助于减少常见错误,提高代码可读性和可维护性。在实际开发中,合理使用 if 控制结构是编写健壮逻辑的基础。

http://www.dtcms.com/a/308104.html

相关文章:

  • 渗透RCE
  • php在使用 composer 安装时报错集合
  • Jmeter 命令行压测、HTML 报告、Jenkins 配置目录
  • 材质:3D渲染的隐形支柱
  • 第二篇:Three.js核心三要素:场景、相机、渲染器
  • Linux网络-------3.应⽤层协议HTTP
  • 【运维基础】Linux 进程调度管理
  • 异步I/O和同步I/O
  • USRP捕获手机/路由器数据传输信号波形(下)
  • 金融专题|某跨境支付机构:以榫卯企业云平台 VPC 功能保障业务主体安全
  • 文档识别算法-文字识别接口-表格还原-图表文字识别API
  • HCIA-Datacom认证笔记:IP路由基础——核心概念与路由分类
  • Amazon Aurora MySQL 8.0 完整指南
  • 一些利用AIOps工具进行云原生技术持续创新的成功案例
  • Python 元编程实战:动态属性与数据结构转换技巧
  • Pycaita二次开发基础代码解析:曲面法线生成、零件加载与材料应用
  • 基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联
  • AI陪伴的发展现状
  • STM32——HAL 库MDK工程创建
  • 2000-2024年中国1KM分辨率年度植被指数(NDVI、EVI)数据集
  • 万物都有属于自己的律动
  • 公路坑槽检测分析原理和思路
  • 嵌入式开发学习———Linux环境下IO进程线程学习(一)
  • 【0基础PS】Photoshop (PS) 理论知识
  • linux线程互斥和同步
  • 操作系统系统面试常问(内存、快表、相关知识)
  • 中欧建交50周年,中硼医疗领衔中意BNCT合作月,中国尖端技术出海欧洲
  • main函数,常量指针与指针常量,野指针等,void与void的区别
  • Kubernetes 应用部署实战:为什么需要 Kubernetes?
  • Apache Tomcat样例目录session操纵漏洞解读