關註公眾號【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資深架構師,項目管理專業人士,上億營收AI產品研發負責人。 語句 語句是Go編程語言中完成特定操作的單 ...
關註公眾號【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產品業務負責人。