Go程序设计语言 1.1 hello,world
我們依然從永恒的"hello, world"例子開始,它出現(xiàn)在1978年出版的《The C Program-ming Language》這本書的開頭。C對(duì)Go的影響非常直接,我們用"hello, world"來說明一些主要的思路
gop1.io/ch1/helloworld
Go是編譯型的語言。Go的工具鏈將程序的源文件轉(zhuǎn)變成機(jī)器相關(guān)的原生二進(jìn)制指令。這些工具可以通過單一的go命令配合其子命令進(jìn)行使用。最簡單的子命令是run,它將一個(gè)或多個(gè)以.go為后綴的源文件進(jìn)行編譯、鏈接,然后運(yùn)行生成的可執(zhí)行文件(本書中我們使用$符號(hào)作為命令提示符):
$ go run helloworld.go不出意料,這將輸出:
Hello,世界
Go原生地支持Unicode,所以它可以處理所有國家的語言
如果這個(gè)程序不是一次性的實(shí)驗(yàn),那么編譯輸出成一個(gè)可復(fù)用的程序比較好。這通過go build來實(shí)現(xiàn):
這條命令生成了一個(gè)叫作helloworld的二進(jìn)制程序,它可以不用進(jìn)行任何其他處理,隨時(shí)執(zhí)行:
$ ./helloworld Hello, 世界我們給每一個(gè)重要的例子都加了一個(gè)標(biāo)簽,提示你可以從本書在gop1.io的源碼庫獲取代碼:
gop1.io/ch1/helloworld
如果執(zhí)行g(shù)o get gop1.io/ch1/helloworld,它將會(huì)把源代碼取到相應(yīng)的目錄。這將在2.6節(jié)和10.7節(jié)進(jìn)行更多的討論
現(xiàn)在我們來說說該程序本身。Go代碼是使用包來組織的,包類似于其他語言中的庫和模塊。一個(gè)包由一個(gè)或多個(gè).go源文件組成,放在一個(gè)文件夾中,該文件夾的名字描述了包的作用。每一個(gè)源文件的開始都用package聲明,例子里面是package main,指明了這個(gè)文件屬于哪個(gè)包。后面跟著它導(dǎo)入的其他包的列表,然后是存儲(chǔ)在文件中的程序聲明
Go的標(biāo)準(zhǔn)庫中有100多個(gè)包用來完成輸入、輸出、排序、文本處理等常規(guī)任務(wù)。例如,fmt包中的函數(shù)用格式化輸出和掃描輸入。Println是fmt中一個(gè)基本的輸出函數(shù),它輸出一個(gè)或多個(gè)用空格分隔的值,結(jié)尾使用一個(gè)換行符,這樣看起來這些值是單行輸出
名為main的包比較特殊,它用來定義一個(gè)獨(dú)立的可執(zhí)行程序,而不是庫。在main包中,函數(shù)main也是特殊的,不管在什么程序中,main做什么事情,它總是程序開始執(zhí)行的地方。當(dāng)然,main通常調(diào)用其他包中的函數(shù)來做更多的事情,比如fmt.Println
我們需要告訴編譯器源文件需要哪些包,用package聲明后面的import來導(dǎo)入這些包。"hello, world"程序僅使用了一個(gè)來自于其他包的函數(shù),而大多數(shù)函數(shù)可能導(dǎo)入更多的包。
你必須精確地導(dǎo)入需要的包。在缺失導(dǎo)入或存在不需要的包的情況下,編譯會(huì)失敗,這種嚴(yán)格的要求可以防止程序演化中引用不需要的包
import聲明必須跟在package聲明之后。import導(dǎo)入聲明后面,是組成程序的函數(shù)、變量、常量、類型(以func、var、const、type開頭)聲明。大部分情況下,聲明的順序是沒有關(guān)系的。示例中的程序足夠短,因?yàn)樗宦暶髁艘粋€(gè)函數(shù),這個(gè)函數(shù)又僅僅調(diào)用了一個(gè)其他的函數(shù)。為了節(jié)省空間,在處理示例的時(shí)候,但是它們存在于源文件中,并且編譯時(shí)必不可少
一個(gè)函數(shù)的聲明由func關(guān)鍵字、函數(shù)名、參數(shù)列表(main函數(shù)為空)、返回值列表(可以為空)、放在大括號(hào)內(nèi)的函數(shù)體組成,函數(shù)體定義函數(shù)是用來做什么的,這將在第5章詳細(xì)介紹
Go對(duì)于代碼的格式化要求非常嚴(yán)格。gofmt工具將代碼以標(biāo)準(zhǔn)格式重寫,go工具的fmt子命令使用gofmt工具來格式化指定包里的所有文件或者當(dāng)前文件夾中的文件(默認(rèn)情況下)。本書中包含的所有Go源代碼文件都使用gofmt運(yùn)行過,你應(yīng)該養(yǎng)成對(duì)自己的代碼使用gofmt工具的習(xí)慣。定制一個(gè)標(biāo)準(zhǔn)的格式,可以省去大量無關(guān)緊要的辯論,更重要的是,如果允許隨心所欲的格式,各種自動(dòng)化的源代碼轉(zhuǎn)換工具將不可用
許多文本編輯器可以配置為每次在保存文件時(shí)自動(dòng)運(yùn)行g(shù)ofmt,因此源文件總可以保持正確的形式。此外,一個(gè)相關(guān)的工具goimports可以按需管理導(dǎo)入聲明的插入和移除。它不是標(biāo)準(zhǔn)發(fā)布版的一部分,可以通過執(zhí)行下面的命令獲取到:
$ go get golang.org/x/tools/cmd/goimports對(duì)大多數(shù)用戶來說,按照常規(guī)方式下載、編譯包,執(zhí)行自帶的測試,查看文檔等操作,使用go工具都可以實(shí)現(xiàn),這將在10.7節(jié)詳細(xì)介紹
總結(jié)
以上是生活随笔為你收集整理的Go程序设计语言 1.1 hello,world的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GO程序设计语言学习笔记
- 下一篇: 自己读Go程序设计语言的一些总结(更新i