關注公眾號【TechLeadCloud】,分享網際網路架構、雲服務技術的全維度知識。作者擁有10+年網際網路服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智慧實驗室成員,阿里雲認證的資深架構師,專案管理專業人士,上億營收AI產品研發負責人。
語句是Go程式語言中完成特定操作的單個邏輯指令。語句是組成程式的基本單元,它們可以控制程式流程、進行賦值、宣告變數等。
用於定義一個或多個變數,但不一定要賦值。
舉例
var age int
var name, address string
定義一個或多個常數值。
舉例
const PI = 3.14
const greeting = "Hello, Go!"
用於給已宣告的變數分配新的值。
舉例
x := 10
y = x + 5
a, b := 20, 30
基於某個條件來執行程式碼塊。
舉例
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 grade {
case "A":
fmt.Println("Excellent!")
case "B":
fmt.Println("Good")
default:
fmt.Println("Passed")
}
用於重複執行某段程式碼。
舉例
for i := 0; i < 10; i++ {
fmt.Println(i)
}
for _, value := range array {
fmt.Println(value)
}
用於中斷當前迴圈。
舉例
for i := 0; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
跳過當前迭代,並繼續下一個迭代。
舉例
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i)
}
從函數中返回特定值。
舉例
func add(a int, b int) int {
return a + b
}
跳轉到指定的標籤。
舉例
for i := 0; i < 10; i++ {
if i == 5 {
goto end
}
fmt.Println(i)
end:
}
確保在函數結束前執行某個語句。
舉例
func printFile() {
file, err := os.Open("file.txt")
if err != nil {
panic(err)
}
defer file.Close()
// Do file operations...
}
在新的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中,表示式根據所包含的內容和結果的不同,可以有多種形式。
字面量是一個表示固定值的表示式。
舉例
42 // 整型字面量
3.14 // 浮點字面量
true // 布林字面量
"Hello" // 字串字面量
變數和常數是預先定義的,具有特定名稱和值的實體。
舉例
const PI = 3.14
var name = "Go"
這些表示式使用算術運運算元,如+
、-
、*
、/
和%
。
舉例
a := 5
b := 2
sum := a + b // 結果:7
difference := a - b // 結果:3
product := a * b // 結果:10
quotient := a / b // 結果:2
remainder := a % b // 結果:1
關係表示式評估為布林值,常用的關係運算子有==
、!=
、<
、<=
、>
和>=
。
舉例
x := 5
y := 3
result1 := x == y // 結果:false
result2 := x > y // 結果:true
邏輯表示式用於組合多個布林表示式,常用的邏輯運運算元有&&
、||
和!
。
舉例
a := true
b := false
result1 := a && b // 結果:false
result2 := a || b // 結果:true
result3 := !a // 結果:false
賦值表示式給變數賦值,並返回該值。
舉例
x := 10 // 使用 := 進行賦值
y = x + 5 // 使用 = 進行賦值
函數呼叫返回函數的返回值。
舉例
func add(a int, b int) int {
return a + b
}
result := add(5, 3) // 結果:8
這些表示式將值從一個型別轉換為另一個型別。
舉例
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產品業務負責人。