共计 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 int 、var name, address string 、var x, y int = 3, 4 、var active bool 、var salary = 50000 |
常量申明 | const PI = 3.14 、const greeting = "Hello, Go!" 、const active = false 、const daysInWeek = 7 、const lightSpeed = 299792458 |
赋值语句 | x := 10 、y = x + 5 、a, b := 20, 30 、name = "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 label2 、if 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 int 、var name, address string 、var x, y int = 3, 4 、var active bool 、var salary = 50000 |
常量申明 | const PI = 3.14 、const greeting = "Hello, Go!" 、const active = false 、const daysInWeek = 7 、const lightSpeed = 299792458 |
赋值语句 | x := 10 、y = x + 5 、a, b := 20, 30 、name = "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 label2 、if 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 产品业务负责人。