Go语句与表达式深度解析:全案例手册

go,语句,表达式,深度,解析,案例,手册 · 浏览次数 : 184

小编点评

```go // 基础表达式 x := 5 y := 3 result1 := x == y // 复合表达式 a := 5b := 2sum := a + b // 逻辑表达式 x > 10 && y < 5 //赋值表达式 x := 10 // 函数调用表达式 func add(a, b int) int { return a + b } // 类型转换表达式 x := 5.8 y := int(x) // for 语句 for i := 0; i < 5; i++ { // 循环条件 } // switch 语句 switch x { case 5: // switch 语句条件 } // for 语句 for i, v := range arr { // 范围遍历语法 } // map 语句 for key, val := range mapData { // 映射语法 } // break 语句 for { if condition { // 循环条件 break } } // switch 语句 (多选) switch x { case 5: // 多选分支 case 6: // 多选分支 } // for 语句 (多轮) for i := 0; i < 10; i++ { // 多轮循环 } ```

正文

关注公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

语句

语句是Go编程语言中完成特定操作的单个逻辑指令。语句是组成程序的基本单元,它们可以控制程序流程、进行赋值、声明变量等。

1. 声明语句

1.1 变量声明

用于定义一个或多个变量,但不一定要赋值。

举例

var age int
var name, address string

1.2 常量声明

定义一个或多个常量值。

举例

const PI = 3.14
const greeting = "Hello, Go!"

2. 赋值语句

用于给已声明的变量分配新的值。

举例

x := 10
y = x + 5
a, b := 20, 30

3. 控制流语句

3.1 条件语句

if语句

基于某个条件来执行代码块。

举例

if x > y {
    fmt.Println("x is greater than y")
} else if x < y {
    fmt.Println("x is less than y")
} else {
    fmt.Println("x is equal to y")
}

switch语句

基于一个表达式或值来执行多个代码块中的一个。

举例

switch grade {
case "A":
    fmt.Println("Excellent!")
case "B":
    fmt.Println("Good")
default:
    fmt.Println("Passed")
}

3.2 循环语句

for语句

用于重复执行某段代码。

举例

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

for _, value := range array {
    fmt.Println(value)
}

3.3 跳转语句

break语句

用于中断当前循环。

举例

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Println(i)
}

continue语句

跳过当前迭代,并继续下一个迭代。

举例

for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue
    }
    fmt.Println(i)
}

return语句

从函数中返回特定值。

举例

func add(a int, b int) int {
    return a + b
}

goto语句

跳转到指定的标签。

举例

for i := 0; i < 10; i++ {
    if i == 5 {
        goto end
    }
    fmt.Println(i)
end:
}

4. 其他语句

4.1 defer语句

确保在函数结束前执行某个语句。

举例

func printFile() {
    file, err := os.Open("file.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    
    // Do file operations...
}

4.2 go语句

在新的goroutine中执行函数调用。

举例

go func() {
    fmt.Println("Executing in a new goroutine")
}()

实战案例

语句 语句样例
变量声明 var age intvar name, address stringvar x, y int = 3, 4var active boolvar salary = 50000
常量声明 const PI = 3.14const greeting = "Hello, Go!"const active = falseconst daysInWeek = 7const lightSpeed = 299792458
赋值语句 x := 10y = x + 5a, b := 20, 30name = "Alice"isActive := true
if语句 if x > 10 { ... }if x > 10 && y < 5 { ... }if active { ... }if name := getName(); name != "" { ... }if age > 18 { ... } else { ... }
switch语句 switch x { ... }switch { case x > 10: ... }switch day { case "Monday": ... }switch n := 4; n { ... }switch y.(type) { ... }
for语句 for i := 0; i < 5; i++ { ... }for i, v := range arr { ... }for x > 5 { ... }for key, val := range mapData { ... }for _, char := range str { ... }
break语句 for { if condition { break } }switch { case x: if y { break } }for x > 10 { ...; break; ... }label: for { ...; break label; ... }for i := 0; i < 10; i++ { if i == 5 { break } }
continue语句 for i := 0; i < 10; i++ { if i%2 == 0 { continue } }for _, v := range data { if v == nil { continue } }for x > 0 { ...; if condition { continue } ... }for { if !isValid(data) { continue } ... }for idx, value := range items { if value == "" { continue } }
return语句 func add(a, b int) int { return a + b }func name() string { return "Alice" }func getDetails() (string, int) { return "Alice", 30 }func isActive() bool { ...; return false }func calculate() float64 { ...; return result }
goto语句 label1: for { ...; if x > 5 { goto label1 } }label2: fmt.Println("Start"); ...; goto label2if condition { goto errorHandling } ... errorHandling: ...if !isValid { goto cleanup } ... cleanup: ...
defer语句 file, _ := os.Open("file.txt"); defer file.Close()mutex.Lock(); defer mutex.Unlock()defer fmt.Println("Finished!")conn.Connect(); defer conn.Disconnect()reader := openReader(); defer reader.Close()
go语句 go fmt.Println("Running in goroutine")go process(data)go func(val int) { ... }(x)go startServer()go handleRequest(request)

表达式介绍、详解、举例

在编程中,表达式是一个结构,通过某种方式组合了变量、常量和操作符,并且可以被评估为某个值。在Go中,表达式根据所包含的内容和结果的不同,可以有多种形式。

1. 基础表达式

1.1 字面量

字面量是一个表示固定值的表达式。

举例

42       // 整型字面量
3.14     // 浮点字面量
true     // 布尔字面量
"Hello"  // 字符串字面量

1.2 变量和常量

变量和常量是预先定义的,具有特定名称和值的实体。

举例

const PI = 3.14
var name = "Go"

2. 复合表达式

2.1 算术表达式

这些表达式使用算术运算符,如+-*/%

举例

a := 5
b := 2
sum := a + b        // 结果:7
difference := a - b // 结果:3
product := a * b    // 结果:10
quotient := a / b   // 结果:2
remainder := a % b  // 结果:1

2.2 关系表达式

关系表达式评估为布尔值,常用的关系运算符有==!=<<=>>=

举例

x := 5
y := 3
result1 := x == y  // 结果:false
result2 := x > y   // 结果:true

2.3 逻辑表达式

逻辑表达式用于组合多个布尔表达式,常用的逻辑运算符有&&||!

举例

a := true
b := false
result1 := a && b  // 结果:false
result2 := a || b  // 结果:true
result3 := !a     // 结果:false

2.4 赋值表达式

赋值表达式给变量赋值,并返回该值。

举例

x := 10           // 使用 := 进行赋值
y = x + 5         // 使用 = 进行赋值

3. 函数调用表达式

函数调用返回函数的返回值。

举例

func add(a int, b int) int {
    return a + b
}

result := add(5, 3)  // 结果:8

4. 类型转换表达式

这些表达式将值从一个类型转换为另一个类型。

举例

x := 5.8
y := int(x)  // 结果:5

实战案例

语句 语句样例
变量声明 var age intvar name, address stringvar x, y int = 3, 4var active boolvar salary = 50000
常量声明 const PI = 3.14const greeting = "Hello, Go!"const active = falseconst daysInWeek = 7const lightSpeed = 299792458
赋值语句 x := 10y = x + 5a, b := 20, 30name = "Alice"isActive := true
if语句 if x > 10 { ... }if x > 10 && y < 5 { ... }if active { ... }if name := getName(); name != "" { ... }if age > 18 { ... } else { ... }
switch语句 switch x { ... }switch { case x > 10: ... }switch day { case "Monday": ... }switch n := 4; n { ... }switch y.(type) { ... }
for语句 for i := 0; i < 5; i++ { ... }for i, v := range arr { ... }for x > 5 { ... }for key, val := range mapData { ... }for _, char := range str { ... }
break语句 for { if condition { break } }switch { case x: if y { break } }for x > 10 { ...; break; ... }label: for { ...; break label; ... }for i := 0; i < 10; i++ { if i == 5 { break } }
continue语句 for i := 0; i < 10; i++ { if i%2 == 0 { continue } }for _, v := range data { if v == nil { continue } }for x > 0 { ...; if condition { continue } ... }for { if !isValid(data) { continue } ... }for idx, value := range items { if value == "" { continue } }
return语句 func add(a, b int) int { return a + b }func name() string { return "Alice" }func getDetails() (string, int) { return "Alice", 30 }func isActive() bool { ...; return false }func calculate() float64 { ...; return result }
goto语句 label1: for { ...; if x > 5 { goto label1 } }label2: fmt.Println("Start"); ...; goto label2if condition { goto errorHandling } ... errorHandling: ...if !isValid { goto cleanup } ... cleanup: ...
defer语句 file, _ := os.Open("file.txt"); defer file.Close()mutex.Lock(); defer mutex.Unlock()defer fmt.Println("Finished!")conn.Connect(); defer conn.Disconnect()reader := openReader(); defer reader.Close()
go语句 go fmt.Println("Running in goroutine")go process(data)go func(val int) { ... }(x)go startServer()go handleRequest(request)

关注公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

如有帮助,请多关注
个人微信公众号:【TechLeadCloud】分享AI与云服务研发的全维度知识,谈谈我作为TechLead对技术的独特洞察。
TeahLead KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。

与Go语句与表达式深度解析:全案例手册相似的内容:

Go语句与表达式深度解析:全案例手册

关注公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 语句 语句是Go编程语言中完成特定操作的单

Go流程控制与快乐路径原则

Go流程控制与快乐路径原则 目录Go流程控制与快乐路径原则一、流程控制基本介绍二、if 语句2.1 if 语句介绍2.2 单分支结构的 if 语句形式2.3 Go 的 if 语句的特点2.3.1 分支代码块左大括号与if同行2.3.2 条件表达式不需要括号三、操作符3.1 逻辑操作符3.2 操作符的

go 流程控制之switch 语句介绍

go 流程控制之switch 语句介绍 目录go 流程控制之switch 语句介绍一、switch语句介绍1.1 认识 switch 语句1.2 基本语法二、Go语言switch语句中case表达式求值顺序2.1 switch语句中case表达式求值次序介绍2.2 switch语句中case表达式的

爽。。。一键导出 MySQL 表结构,告别手动梳理表结构文档了。。。

背景 系统需要交付,客户要求提供交维材料,包括系统的表结构,安排开发人员进行梳理,效率比较慢,遂自己花点时间捣鼓一下,发现有此插件,记录一下方便与同事分享 前提条件 必须有 go语言环境,有的话直接看第二点 一、安装 go语言环境 1、检查本机是否安装 go go version 2、如果没有,安装

Go之流程控制大全: 细节、示例与最佳实践

本文深入探讨Go语言中的流程控制语法,包括基本的if-else条件分支、for循环、switch-case多条件分支,以及与特定数据类型相关的流程控制,如for-range循环和type-switch。文章还详细描述了goto、fallthrough等跳转语句的使用方法,通过清晰的代码示例为读者提供

简单对比一下 C 与 Go 两种语言

使用一个简单的计数程序将古老的 C 语言与现代 Go 进行比较。

Go语言关键字解析:深入了解Go语言中的关键字

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 为了更加深入地介绍Go语言以及与C\#语言的比较,本文将会从多个维度出发进行详细的

0.go语言实用工具编写要这样学

[TOC] ## 写作目的 本篇章写作有以下目的: 1. 介绍go语言的基础知识,这里你会发现go语言学习成本较低,与python语言相似。 2. 介绍go语言的常用标准库,这里你会发现go语言的标准库已经非常强大,python语言要达到类似效果需要其他第三方库的参与。 3. 介绍go语言的实用工具

golang的 CGO 是什么

CGO是Go(Golang)语言中的一个工具,全称为 "C-Go" 或者 "C for Go"。 它是Go标准库的一部分,允许Go代码与C语言代码进行交互。 CGO提供了在Go程序中使用C语言库的能力,同时也允许C代码调用Go的函数。 通过CGO,开发者可以利用Go语言的强类型和垃圾回收等特性,同时

Go代码包与引入:如何有效组织您的项目

本文深入探讨了Go语言中的代码包和包引入机制,从基础概念到高级应用一一剖析。文章详细讲解了如何创建、组织和管理代码包,以及包引入的多种使用场景和最佳实践。通过阅读本文,开发者将获得全面而深入的理解,进一步提升Go开发的效率和质量。 关注公众号【TechLeadCloud】,分享互联网架构、云服务技术