關(guān)注TechLeadCloud,分享互聯(lián)網(wǎng)架構(gòu)、云服務(wù)技術(shù)的全維度知識(shí)。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)本復(fù)旦碩,復(fù)旦機(jī)器人智能實(shí)驗(yàn)室成員,阿里云認(rèn)證的資深架構(gòu)師,項(xiàng)目管理專業(yè)人士,上億營(yíng)收AI產(chǎn)品研發(fā)負(fù)責(zé)人。
一、Go的關(guān)鍵字列表和分類
介紹
關(guān)鍵字(Keywords)是編程語言中預(yù)定義的一組特殊詞匯,每個(gè)關(guān)鍵字都有一個(gè)明確的功能和用途。在Go編程語言中,關(guān)鍵字起著構(gòu)建程序邏輯框架的作用,是程序語義和結(jié)構(gòu)的基礎(chǔ)。本篇文章旨在深入探究關(guān)鍵字在Go中的定位與應(yīng)用,以理解其在程序設(shè)計(jì)中的重要性。Go語言有25個(gè)預(yù)定義的關(guān)鍵字,這些關(guān)鍵字用于各種特定目的,從聲明變量和函數(shù),到流程控制和并發(fā)編程。
break, default, func, interface, select,
case, defer, go, map, struct,
chan, else, goto, package, switch,
const, fallthrough, if, range, type,
continue, for, import, return, var
關(guān)鍵字在Go中的定位
語言的基石
關(guān)鍵字在任何編程語言中都是基礎(chǔ)構(gòu)成元素,Go語言也不例外。它們是用于描述程序邏輯、定義數(shù)據(jù)結(jié)構(gòu)、和處理錯(cuò)誤等多方面任務(wù)的工具。
簡(jiǎn)潔與高效
Go語言以其簡(jiǎn)潔性和高效性而受到廣泛歡迎,這在很大程度上得益于其有限但高度優(yōu)化的一組關(guān)鍵字。Go僅有25個(gè)關(guān)鍵字,相較于其他編程語言,這個(gè)數(shù)字相對(duì)較小,但每一個(gè)關(guān)鍵字都有明確和重要的用途。
可擴(kuò)展性和靈活性
雖然關(guān)鍵字本身是固定的,但Go提供了一系列復(fù)合語句和操作符,以實(shí)現(xiàn)高度的可擴(kuò)展性和靈活性。例如,你可以使用 if-else,for 和 switch 關(guān)鍵字創(chuàng)建復(fù)雜的邏輯結(jié)構(gòu)。
關(guān)鍵字分類
聲明各種代碼元素
關(guān)鍵字 | 描述 |
---|---|
const | 用于聲明一個(gè)或多個(gè)常量 |
func | 用于定義新的函數(shù) |
import | 用于導(dǎo)入外部包 |
package | 用于聲明包名,通常位于每個(gè)Go源文件的第一行 |
type | 用于聲明自定義類型,如結(jié)構(gòu)體、接口、別名等 |
var | 用于聲明一個(gè)或多個(gè)變量 |
組合類型的字面表示
關(guān)鍵字 | 描述 |
---|---|
chan | 用于聲明一個(gè)新的通道(channel) |
interface | 用于定義一個(gè)新的接口 |
map | 用于聲明一個(gè)新的映射(鍵-值存儲(chǔ)) |
struct | 用于定義一個(gè)新的結(jié)構(gòu)體 |
基本流程控制語法
關(guān)鍵字 | 描述 |
---|---|
break | 用于中斷當(dāng)前循環(huán)或 switch 語句 |
case |
switch 語句中的一個(gè)分支 |
continue | 跳過當(dāng)前循環(huán)迭代的剩余語句,進(jìn)入下一次迭代 |
default |
switch 語句中的默認(rèn)分支 |
else |
if 語句的否定分支 |
fallthrough | 用于 switch 語句中,使控制流繼續(xù)執(zhí)行下一個(gè) case
|
for | 用于循環(huán) |
goto | 跳轉(zhuǎn)到標(biāo)簽(不推薦使用) |
if | 條件語句 |
range | 用于 for 循環(huán),遍歷數(shù)組、切片、映射或通道 |
return | 用于從函數(shù)返回值 |
select | 用于多路通道選擇 |
switch | 用于多分支選擇語句 |
協(xié)程和延遲函數(shù)調(diào)用
關(guān)鍵字 | 描述 |
---|---|
defer | 用于延遲執(zhí)行函數(shù),通常用于清理資源 |
go | 用于啟動(dòng)一個(gè)新的 goroutine,實(shí)現(xiàn)并發(fā) |
二、Go的關(guān)鍵字全代碼示例
關(guān)鍵字全代碼示例
關(guān)鍵字 | 代碼示例 | 代碼作用 |
---|---|---|
const | const PI = 3.14159 |
定義常量 PI
|
func | func add(x, y int) int { return x + y } |
定義名為 add 的函數(shù) |
import | import "fmt" |
導(dǎo)入 fmt 包 |
package | package main |
定義包名為 main
|
type | type Point struct {x, y int} |
定義一個(gè)名為 Point 的結(jié)構(gòu)體 |
var | var name string = "John" |
定義一個(gè)名為 name 的變量 |
chan | ch := make(chan int) |
創(chuàng)建一個(gè)新的整數(shù)類型的通道 |
interface | type Writer interface { Write([]byte) error } |
定義一個(gè)名為 Writer 的接口 |
map | m := map[string]int{"one": 1} |
創(chuàng)建一個(gè)鍵為字符串、值為整數(shù)的映射 |
struct | type Circle struct { Radius float64 } |
定義一個(gè)名為 Circle 的結(jié)構(gòu)體 |
break | if x > 0 { break } |
如果 x > 0 ,則跳出循環(huán) |
case | case "apple": fmt.Println("It's an apple") |
在 switch 語句中,定義一個(gè) case
|
continue | if x < 0 { continue } |
如果 x < 0 ,則跳過當(dāng)前循環(huán)迭代 |
default | default: fmt.Println("It's default") |
在 switch 語句中,定義一個(gè)默認(rèn) case
|
else | if x > 0 { /*...*/ } else { /*...*/ } |
if 語句的否定分支 |
fallthrough | case 1: fallthrough |
在 switch 語句中,強(qiáng)制執(zhí)行下一個(gè) case
|
for | for i := 0; i < 10; i++ { /*...*/ } |
循環(huán)10次 |
goto | goto myLabel |
跳轉(zhuǎn)到 myLabel 標(biāo)簽(不推薦) |
if | if x > 0 { /*...*/ } |
條件為 x > 0 時(shí),執(zhí)行某個(gè)操作 |
range | for k, v := range m { /*...*/ } |
遍歷映射 m
|
return | return x + y |
從函數(shù)中返回 x + y
|
select | select { case <-ch: /*...*/} |
多路通道選擇 |
switch | switch x { case 1: /*...*/ } |
多分支選擇 |
defer | defer fmt.Println("bye") |
延遲執(zhí)行 fmt.Println("bye") 直到函數(shù)退出 |
go | go doSomething() |
在新的 goroutine 中執(zhí)行 doSomething() 函數(shù) |
三、Go的標(biāo)識(shí)符定義
標(biāo)識(shí)符是編程語言中用于識(shí)別各種編程元素(如變量、函數(shù)、類型等)的名字。在Go語言中,標(biāo)識(shí)符有一組特定的規(guī)則和約定。下面將詳細(xì)解析這些規(guī)則和特性。
基礎(chǔ)定義
一個(gè)標(biāo)識(shí)符是一個(gè)以Unicode字母或者下劃線(_
)開頭,并且完全由Unicode字母和Unicode數(shù)字組成的單詞。
- Unicode字母:這些是定義在Unicode標(biāo)準(zhǔn)8.0中的Lu、Ll、Lt、Lm和Lo分類中的字符。
- Unicode數(shù)字:這些是定義在Unicode標(biāo)準(zhǔn)8.0中的Nd數(shù)字字符分類中的字符。
特殊規(guī)定
關(guān)鍵字與標(biāo)識(shí)符
Go的關(guān)鍵字不能被用作標(biāo)識(shí)符。這是一個(gè)重要的限制,以避免命名沖突和語法混淆。
空標(biāo)識(shí)符
標(biāo)識(shí)符 _
是一個(gè)特殊字符,它被稱為空標(biāo)識(shí)符。它用于忽略函數(shù)的某個(gè)返回值或強(qiáng)制性聲明一個(gè)變量,但不使用。
作用域和可見性
- 導(dǎo)出標(biāo)識(shí)符:一個(gè)由Unicode大寫字母開頭的標(biāo)識(shí)符稱為導(dǎo)出標(biāo)識(shí)符,也可以被理解為公開(public)。
- 非導(dǎo)出標(biāo)識(shí)符:其它(即非Unicode大寫字母開頭的)標(biāo)識(shí)符稱為非導(dǎo)出標(biāo)識(shí)符,也可以被理解為私有(private)。
注意:截至目前(Go 1.20),東方字符都被視為非導(dǎo)出字符。
合法標(biāo)識(shí)符示例
導(dǎo)出標(biāo)識(shí)符
Player_9
DoSomething
VERSION
?o
Π
非導(dǎo)出標(biāo)識(shí)符
_
_status
memStat
book
π
一個(gè)類型
??
エラー
非法標(biāo)識(shí)符
- 由Unicode數(shù)字開頭:
123
,3apples
- 含有不符合要求的Unicode字符:
a.b
,*ptr
,$name
,a@b.c
- 使用關(guān)鍵字:
type
,range
四、Go的標(biāo)識(shí)符舉例
在Go語言中,標(biāo)識(shí)符用于命名各種類型的編程元素,如變量、常量、函數(shù)等。本文將通過表格的形式,提供不同類型標(biāo)識(shí)符的代碼示例和相關(guān)解釋。
表格:Go標(biāo)識(shí)符類型、示例與解釋
標(biāo)識(shí)符類型 | 標(biāo)識(shí)符示例 | 解釋 |
---|---|---|
變量 | myVariable |
用于存儲(chǔ)數(shù)據(jù)值。 |
常量 | MAX_COUNT |
用于存儲(chǔ)不會(huì)改變的數(shù)據(jù)值。 |
函數(shù) | CalculateSum |
包含執(zhí)行特定任務(wù)的代碼塊。 |
結(jié)構(gòu)體 | Person |
用于定義包含多個(gè)字段(變量)的復(fù)合數(shù)據(jù)類型。 |
接口 | Writer |
定義了方法集,任何實(shí)現(xiàn)了這些方法的類型都被認(rèn)為實(shí)現(xiàn)了該接口。 |
切片 | mySlice |
動(dòng)態(tài)數(shù)組,可以在運(yùn)行時(shí)更改大小。 |
Map | colorMap |
鍵值對(duì)的集合。 |
Channel | msgChannel |
用于在Goroutine之間發(fā)送和接收數(shù)據(jù)。 |
包 | fmt |
用于組織和復(fù)用代碼,通常包含函數(shù)、變量、常量等。 |
別名 | type MyInt int |
用于給現(xiàn)有類型創(chuàng)建一個(gè)新名字。 |
枚舉 | enum Status |
一組命名的整數(shù)常量。 |
Goroutine | go doSomething() |
并發(fā)執(zhí)行的函數(shù)。 |
標(biāo)簽 | LOOP: |
用于控制流語句,如break 和continue 。 |
空標(biāo)識(shí)符 | _ |
用于忽略不需要的值。 |
導(dǎo)出標(biāo)識(shí)符 | PublicVar |
在其他包中可見和可用的標(biāo)識(shí)符。 |
非導(dǎo)出標(biāo)識(shí)符 | privateVar |
僅在定義它的包內(nèi)可見和可用的標(biāo)識(shí)符。 |
五、Go關(guān)鍵詞和標(biāo)識(shí)符代碼實(shí)戰(zhàn)
在本部分中,我們將通過一個(gè)綜合性的代碼實(shí)戰(zhàn)案例來探討Go中所有關(guān)鍵詞和標(biāo)識(shí)符的實(shí)際應(yīng)用。我們將創(chuàng)建一個(gè)簡(jiǎn)單的計(jì)算器程序,該程序?qū)?shí)現(xiàn)加、減、乘、除四種操作。
綜合案例:簡(jiǎn)單計(jì)算器
package main // package關(guān)鍵詞用于定義包名
import "fmt" // import關(guān)鍵詞用于引入外部包
// 全局變量聲明
var result int // var關(guān)鍵詞用于聲明變量
const maxInput = 100 // const關(guān)鍵詞用于聲明常量
// 自定義類型聲明
type Calculator func(int, int) int // type關(guān)鍵詞用于聲明自定義類型
// 主函數(shù)
func main() { // func關(guān)鍵詞用于聲明函數(shù)
var operator string // 局部變量聲明
var num1, num2 int
for { // for關(guān)鍵詞用于循環(huán)
fmt.Println("請(qǐng)輸入操作符 (+, -, *, /, exit):")
fmt.Scanln(&operator)
if operator == "exit" { // if關(guān)鍵詞用于條件判斷
fmt.Println("程序退出。")
break // break關(guān)鍵詞用于跳出循環(huán)
}
fmt.Println("請(qǐng)輸入兩個(gè)整數(shù):")
fmt.Scanln(&num1, &num2)
switch operator { // switch關(guān)鍵詞用于多條件判斷
case "+":
result = calculate(add, num1, num2)
case "-":
result = calculate(subtract, num1, num2)
case "*":
result = calculate(multiply, num1, num2)
case "/":
if num2 == 0 { // else關(guān)鍵詞用于條件判斷
fmt.Println("除數(shù)不能為0")
continue // continue關(guān)鍵詞用于跳過本次循環(huán)
}
result = calculate(divide, num1, num2)
default: // default關(guān)鍵詞用于多條件默認(rèn)選項(xiàng)
fmt.Println("無效的操作符")
continue
}
fmt.Printf("結(jié)果為: %d\n", result)
}
}
// 函數(shù)聲明與定義
func calculate(calc Calculator, num1, num2 int) int {
return calc(num1, num2)
}
// 加法
func add(a, b int) int {
return a + b
}
// 減法
func subtract(a, b int) int {
return a - b
}
// 乘法
func multiply(a, b int) int {
return a * b
}
// 除法
func divide(a, b int) int {
return a / b
}
關(guān)鍵詞和標(biāo)識(shí)符解析
-
package
:定義了當(dāng)前代碼所屬的包,這里是main
。 -
import
:用于引入外部庫(kù),這里我們引入了fmt
庫(kù)。 -
var
:全局和局部變量聲明。 -
const
:用于定義常量,這里定義了一個(gè)名為maxInput
的常量。 -
type
:用于聲明自定義類型,這里定義了一個(gè)Calculator
函數(shù)類型。 -
func
:用于聲明函數(shù),這里聲明了多個(gè)函數(shù)。 -
for
:用于循環(huán),這里是一個(gè)無限循環(huán)。 -
if
、else
:用于條件判斷。 -
switch
、case
、default
:用于多條件判斷。 -
break
:用于跳出循環(huán)。 -
continue
:用于跳過當(dāng)前循環(huán)迭代。
文章來源:http://www.zghlxwxcb.cn/news/detail-695254.html
關(guān)注TechLeadCloud,分享互聯(lián)網(wǎng)架構(gòu)、云服務(wù)技術(shù)的全維度知識(shí)。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)本復(fù)旦碩,復(fù)旦機(jī)器人智能實(shí)驗(yàn)室成員,阿里云認(rèn)證的資深架構(gòu)師,項(xiàng)目管理專業(yè)人士,上億營(yíng)收AI產(chǎn)品研發(fā)負(fù)責(zé)人。
如有幫助,請(qǐng)多關(guān)注
個(gè)人微信公眾號(hào):【TechLeadCloud】分享AI與云服務(wù)研發(fā)的全維度知識(shí),談?wù)勎易鳛門echLead對(duì)技術(shù)的獨(dú)特洞察。
TeahLead KrisChang,10+年的互聯(lián)網(wǎng)和人工智能從業(yè)經(jīng)驗(yàn),10年+技術(shù)和業(yè)務(wù)團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)軟件工程本科,復(fù)旦工程管理碩士,阿里云認(rèn)證云服務(wù)資深架構(gòu)師,上億營(yíng)收AI產(chǎn)品業(yè)務(wù)負(fù)責(zé)人。文章來源地址http://www.zghlxwxcb.cn/news/detail-695254.html
到了這里,關(guān)于Go,從命名開始!Go的關(guān)鍵字和標(biāo)識(shí)符全列表手冊(cè)和代碼示例!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!