Go语言程序结构分析初探
每一種編程語言都有自己的語法、結構以及自己的風格,這也是每種語言展現各自魅力及眾不同的地方。Go也不例外,它簡單而優雅,與此同時使用起來也很有趣。在本文中,我們將討論以下幾點:
-
Go程序結構
-
如何運行Go程序
-
Go中的注釋
-
分號
-
代碼回顧
?
Go程序結構
要理解Go程序的結構,首先需要有一個Go程序,讓我們重溫一下最受歡迎的Hello, World!程序。
package main?
import "fmt"?
func main() {
??? fmt.Println("Hello,World!")
}
?
每個源文件(擴展名為.go的文件)必須有一個包聲明。在上面的helloworld.go文件中,第一行聲明了包main,其含義是告訴編譯器這個源文件將包含go的入口點,是主函數。main包的聲明和main函數的組合使其成為獨立的、可執行的Go程序。
在我們的代碼中,我們將信息寫入控制臺,這是一個標準輸出。為此,要使用import關鍵字導入fmt包。fmt包是format單詞的縮寫,它與Go標準庫一起提供給開發人員。fmt包提供了許多寫入到標準輸出的方式(類似fmt.Println的一系列變種)。此外,稍后可以看到導入多個包場景。
?
如何運行Go程序
我們可以使用go run或go build命令運行任何Go程序。使用這些命令可以指示Go編譯器編譯和運行Go代碼。要運行上面的Hello World程序,可以在程序文件當前目錄中使用go run helloworld.go命令。
go run helloworld.go
我們還可以使用go build命令,該命令將生成一個名為helloworld的可執行文件,該文件可以像任何其他exe可執行文件一樣執行。命令如下:
go build
?
如果出于某種原因,我們想要更改可執行文件的名稱,那么可以使用go build -o?命令來更改。這將創建一個具有指定的名稱的可執行二進制文件。例如:
$ go build -o exe? #being in thehello-world directory
$ ./exe??????????? # running theexecutable
Hello, World!
根據需要,我們可能想要安裝應用程序。為此,可以使用go install <package-name>?命令。這將創建一個二進制可執行文件,并將其存儲在$GOPATH/bin目錄中。因此,確保設置了GOBIN并將其添加到PATH環境變量中。此外,如果設置了PATH環境變量,可以在系統的任何地方運行該二進制文件。如下所示:
go install helloworld
?
Go中的注釋
在合適的位置向代碼中添加注釋與編寫高質量的、可維護的代碼同樣重要。在Go中,注釋不僅僅是在代碼中添加內聯解釋的一種方式,它也是將api文檔化的一種方式,我們在討論函數時將看到這一點。
?
有兩種方法可以在代碼中添加注釋:行注釋或塊注釋。要添加行注釋,只需以//開頭,后面跟著注釋掉的文本。要添加塊注釋,我們在/*和*/符號之間換行文本。以下是例子:
// package main defines the entry point
package main
// import the 'fmt' package from standard library
import "fmt"
/*
??? The main function is the entrypoint in a Go program.
??? The main function does not havea return type.
??? Also, it does not accept anyparameters.
*/
func main() {
??? fmt.Println("Hello,World!")
}
?
分號
正如在上面的代碼中所看到的,我們的代碼中沒有使用任何分號。那是因為Go會在幕后實現這些。與C語言一樣,Go的語法也使用分號來終止語句,但它們不必出現在源代碼中。
?
Go的文檔是這樣說的:
與C語言一樣,Go的正式語法使用分號來終止語句,但與C語言不同的是,這些分號不會出現在源代碼中。相反,詞法分析程序使用一個簡單的規則在掃描時自動插入分號,因此輸入文本基本上不需要分號。
?
大致規則如下:如果換行符之前的最后一個標記是一個標識符(包括int和float64這樣的單詞),一個基本的文字(如數字或字符串常量),或一個特殊指令(如break/continue/fallthrough/return/++/--)。詞法分析程序總是在以上指令后面插入分號。可以總結為:“如果換行符出現在可以結束語句的標記之后,那么插入一個分號”。分號也可以在右大括號前省略,因此諸如break/continue/fallthrough/return/++/--等不需要分號。
要關于內部的內容,請繼續閱讀go官方文檔。
?
代碼回顧
正如所述,每個獨立應用程序都必須有一個package main的聲明,而帶有這種聲明的.go文件必須有一個main函數。這個main函數是應用程序的入口點,就像在其他編程語言(如C、Java、c#等)中一樣。
?
區別在于,在Java或c#中,main函數可以接受參數,如(string[]args);而在Go中,main函數不接受任何參數,而且main函數不返回任何數據。
?
注意以下代碼是如何導入fmt包的:import “fmt”。此語法僅在導入單個包時有效。如果想導入多個包,那么需要在import()中將包分組。下面是一個例子:
// importing multiple packages in Go
import (
"context"
"database/sql"
"fmt"
"log"
)
注意上面代碼中在任何導入包的末尾沒有分號,這將由詞法分析器來完成。
?
總結
Go有一個非常簡單的程序結構,感覺讀起來更像c。遵循相同的模式,將main函數作為應用程序的入口點。Go提供了一種方便的方法來編寫簡潔的代碼,自動且巧妙地在合適位置插入分號。Go提供了不同的注釋類型在代碼中作描述(與多種主流語言一致),并且能基于注釋快速構建文檔。
?
為了更好地理解幕后的技術細節以及如何在Go中編寫高質量的代碼,強烈建議閱讀Go文檔中Effective Go頁面。
原文作者:Gaurav Gahlot??譯者:江瑋
原文鏈接:https://dzone.com/articles/structure-of-a-go-program?fromrel=true
版權聲明:本文版權歸作者(譯者)及公眾號所有,歡迎轉載,但未經作者(譯者)同意必須保留此段聲明,且在文章頁面明顯位置給出,本文鏈接如有問題,可留言咨詢。
轉載于:https://www.cnblogs.com/davidwang456/p/10313041.html
總結
以上是生活随笔為你收集整理的Go语言程序结构分析初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Kafka: 优化部署的1
- 下一篇: 滴滴自研分布式 NoSQL 数据库 Fu