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

5次阅读

共计 5466 个字符,预计需要花费 14 分钟才能阅读完成。

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

语句

语句是 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 产品研发负责人。

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

正文完
 0