GO语言语法---if语句

文章目录

  • [1. 基本语法](#1. 基本语法)
    • [1.1 单分支](#1.1 单分支)
    • [1.2 双分支](#1.2 双分支)
    • [1.3 多分支](#1.3 多分支)
  • [2. Go特有的if语句特性](#2. Go特有的if语句特性)
    • [2.1 条件前可以包含初始化语句](#2.1 条件前可以包含初始化语句)
    • [2.2 条件表达式不需要括号](#2.2 条件表达式不需要括号)
    • [2.3 必须使用大括号](#2.3 必须使用大括号)
    • [2.4 判断语句所在行数控制](#2.4 判断语句所在行数控制)

Go语言的if语句用于条件判断,与其他C风格语言类似,但有一些独特的语法特点。

1. 基本语法

go 复制代码
if condition {
    // 条件为true时执行的代码
}

1.1 单分支

以下代码表示只有一个判断,如果x > 5则执行大括号中的内容。否则持续继续往后执行。

go 复制代码
// 单分支
    if x > 5 {
        fmt.Println("x大于5")
    }

1.2 双分支

以下代码也只有一个判断,如果x > 5则执行第一个大括号中的内容。否则持续else后面的大括号中的内容。

go 复制代码
    // 双分支
    if x > 15 {
        fmt.Println("x大于15")
    } else {
        fmt.Println("x不大于15")
    }

1.3 多分支

以下代码有多个判断,如果x < 5则执行第一个大括号中的内容。执行完第一个括号中的内容则跳出if语句,不再进行后续的判断。如果不满足第一个判断x < 5,则进入第二次判断,第二次判断满足则执行第二次大括号中的内容,执行完跳出if语句。以此类推,如果所有条件都不满足,则执行else后大括号的内容。

注意:这里的else可以不写(效果等同于else中的语句为空),不写则当所有条件都不符合时,不执行任何内容。

go 复制代码
    // 多分支
    if x < 5 {
        fmt.Println("x小于5")
    } else if x < 15 {
        fmt.Println("x在5到15之间")
    } else {
        fmt.Println("x大于等于15")
    }

2. Go特有的if语句特性

2.1 条件前可以包含初始化语句

go 复制代码
// 用分号分隔
if y := 11; y > 10 {
    fmt.Println("y大于10:", y)
}

2.2 条件表达式不需要括号

条件表达式的括号可加可不加,但是这里推荐不加,因为go的源码也是没有加括号的。写法和作者保持一致。

go 复制代码
if x > 5 {  // 正确
// if (x > 5) {  // 也可以,但不推荐

2.3 必须使用大括号

在c语言之类的语言中,如果if之后的语句只有一句是可以不使用大括号的,但是GO语言强制使用括号。其实这也很好的规范了开发者的代码风格,在很多公司中if后面不加大括号是无法通过Review。

go 复制代码
if x > 5 
    fmt.Println("x大于5")  // 错误:缺少大括号

2.4 判断语句所在行数控制

go 复制代码
	// 错误语法示例
    if x < 5 {
        fmt.Println("x小于5")
    } 
	else if x < 15 {
        fmt.Println("x在5到15之间")
    } else {

	}


	// 正确语法示例
	if x < 5 {
        fmt.Println("x小于5")
    } else if x < 15 {
        fmt.Println("x在5到15之间")
    } else {

	}
相关推荐
花酒锄作田43 分钟前
MCP官方Go SDK尝鲜
golang·mcp
老姚---老姚8 小时前
在windows下编译go语言编写的dll库
开发语言·windows·golang
bing.shao13 小时前
Golang 开发者视角:解读《“人工智能 + 制造” 专项行动》的技术落地机遇
人工智能·golang·制造
ONE_PUNCH_Ge13 小时前
Go 语言泛型
开发语言·后端·golang
zhangfeng11332 天前
Ollama 支持模型微调但是不支持词库,支持RAG,go语言开发的大模型的推理应用,
人工智能·深度学习·golang
Dr.Kun2 天前
【鲲码园PsychoPy】Go/No-go范式
开发语言·后端·golang
源代码•宸2 天前
Golang面试题库(Interface、GMP)
开发语言·经验分享·后端·面试·golang·gmp·调度过程
西京刀客2 天前
Go 语言中的 toolchain 指令-toolchain go1.23.6的作用和目的
开发语言·后端·golang·toolchain
暴躁小师兄数据学院2 天前
【WEB3.0零基础转行笔记】编程语言篇-第一讲:Go语言基础及环节搭建
笔记·golang·web3·区块链
lead520lyq2 天前
Golang本地内存缓存
开发语言·缓存·golang