久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 編程 > Golang > 正文

創建第一個Go語言程序Hello,Go!

2020-04-01 19:25:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了創建第一個Go語言程序Hello,Go!本文詳細的給出項目創建、代碼編寫的過程,同時講解了GOPATH、Go install等內容,需要的朋友可以參考下
 

建立一個用于編寫Go程序的工作目錄go-examples,其絕對路徑為/home/go-examples.開始編寫我們的第一個Go程序。

一、在go-examples下創建一個文件hello.go

 

復制代碼代碼如下:

//hello.go   
package main

 

import "fmt"//實現格式化的I/O  
 
/*Printf someting*/  
func main(){   
       fmt.Printf("Hello,GO!/n")   
}

 

我們來分析下這個程序:

1、程序中的第2行這個是必須的。所有的Go文件以package <something>開頭,對于獨立運行的執行文件必須是package main;

2、第4行說需要將”fmt”包加入main。不是main的其他包都被稱為庫,其他許多編程語言有著類似的概念。

3、第1行和第4行中的//和/*---*/都是注釋

4、package main 必須首先出現,緊跟著是import。在Go中,package 總是首先出現,然后是import,然后是其他所有內容。當Go 程序在執行的時候,首先調用的函數是main.main(),這是從C 中繼承而來。這里定義了這個函數;

5、第8行調用了來自于fmt包的函數打印字符串到屏幕

二、編譯和運行代碼

編譯該源文件并執行生成的可執行文件

 

復制代碼代碼如下:

[root@localhost go-examples]# go build hello.go   
[root@localhost go-examples]# ls   
hello hello.go   
[root@localhost go-examples]# ./hello   
Hello,GO!  

 

通過go build加上要編譯的Go源文件名,我們即可得到一個可執行文件,默認情況下這個文件的名字為源文件名字去掉.go后綴。當然我們也可以通過-o選項來指定其他名字:

 

復制代碼代碼如下:

[root@localhost go-examples]# go build -o firstgo hello.go   
[root@localhost go-examples]# ls   
firstgo hello.go  

 

如果我們在go-examples目錄下直接執行go build命令,后面不帶文件名,我們將得到一個與目錄名同名的可執行文件:

 

復制代碼代碼如下:

[root@localhost go-examples]# go build   
[root@localhost go-examples]# ls   
go-examples hello.go  

 

三、程序入口點(entry point)和包(package)

Go保持了與C家族語言一致的風格:即目標為可執行程序的Go源碼中務必要有一個名為main的函數,該函數即為可執行程序的入口點。除此之外 Go還增加了一個約束:作為入口點的main函數必須在名為main的package中。正如上面hellogo.go源文件中的那樣,在源碼第 一行就聲明了該文件所歸屬的package為main。

Go去除了頭文件的概念,而借鑒了很多主流語言都采用的package的源碼組織方式。package是個邏輯概念,與文件沒有一一對應的關系。 如果多個源文件都在開頭聲明自己屬于某個名為foo的包,那這些源文件中的代碼在邏輯上都歸屬于包foo(這些文件最好在同一個目錄下,至少目前 的Go版本還無法支持不同目錄下的源文件歸屬于同一個包)。

我們看到hellogo.go中import一個名為fmt的包,并利用該包內的Printf函數輸出"Hello, Go!"。直覺告訴我們fmt包似乎是一個標準庫中的包。沒錯,fmt包提供了格式化文本輸出以及讀取格式化輸入的相關函數,與C中的printf或 scanf等類似。我們通過import語句將fmt包導入我們的源文件后就可以使用該fmt包導出(export)的功能函數了(比如 Printf)。

在C中,我們通過static來標識局部函數還是全局函數。而在Go中,包中的函數是否可以被外部調用,要看該函數名的首母是否為大寫。這是一種 Go語言固化的約定:首母大寫的函數被認為是導出的函數,可以被包之外的代碼調用;而小寫字母開頭的函數則僅能在包內使用。在例子中你也看到了 fmt包的Printf函數其首母就是大寫的。

四、GOPATH

把上面的hellogo.go稍作改造,拆分成兩個文件:main.go和hello.go

 

復制代碼代碼如下:

//hello.go   
package hello   
  
import "fmt"  
  
func Hello(who string){   
     fmt.Printf("Hello,%s!/n", who)   
}  

 

 

復制代碼代碼如下:

//main.go   
package main   
  
import "hello"  
  
func main(){   
     hello.Hello("GO")   
}

 

用go build編譯main.go 結果如下

 

復制代碼代碼如下:

[root@localhost go-examples]# go build main.go   
main.go:4:8: import "hello": cannot find package  

 

編譯器居然提示無法找到hello這個package,而hello.go中明明定義了package hello了。這是怎么回事呢?原來go compiler搜索package的方式與我們常規理解的有不同,Go在這方面也有一套約定,這里面涉及到一個重要的環境變量:GOPATH。我們可以使用go help gopath來查看一下有關gopath的manual。

Go compiler的package搜索順序是這樣的,以搜索hello這個package為例:

* 首先,Go compiler會在GO安裝目錄(GOROOT,這里是/home/go/)下查找是否有src/pkg/hello相關包源碼;如果沒有則繼續;

* 如果export GOPATH=PATH1:PAHT2,則Go compiler會依次查找是否存在PATH1/src/hello、PATH2/src/hello;配置在GOPATH中的PATH1和PATH2被稱作workplace;

* 如果在上述幾個位置均無法找到hello這個package,則提示出錯。

在本例子中,我們尚未設置過GOPATH環境變量,也沒有建立類似PATH1/src/hello這樣的路徑,因此Go compiler顯然無法找到hello這個package了。我們來設置一下GOPATH變量并建立相關目錄:

 

復制代碼代碼如下:

[root@localhost go-examples]# export GOPATH=/home/go-examples/   
[root@localhost go-examples]# mkdir src/hello -p   
[root@localhost go-examples]# mv hello.go src/hello/   
[root@localhost go-examples]# go build main.go   
[root@localhost go-examples]# ls   
main main.go src   
[root@localhost go-examples]# ./main   
Hello,GO!  

 

五、Go install

將main.go移到src/main中,這樣這個demo project顯得更加合理,所有源碼均在src下:

復制代碼代碼如下:

[root@localhost go-examples]# cd src/   
[root@localhost src]# ls   
hello main.go  

Go提供了install命令,與build命令相比,install命令在編譯源碼后還會將可執行文件或庫文件安裝到約定的目錄下。我們以main目錄為例:
復制代碼代碼如下:

[root@localhost src]# cd main/   
[root@localhost main]# go install  

install命令執行后,我們發現main目錄下沒有任何變化,原先build時產生的main可執行文件也不見了蹤影。別急,Go install也有一套自己的約定:

 

* go install(在src/DIR下)編譯出的可執行文件以其所在目錄名(DIR)命名

* go install將可執行文件安裝到與src同級別的bin目錄下,bin目錄由go install自動創建

* go install將可執行文件依賴的各種package編譯后,放在與src同級別的pkg目錄下

現在我們來看看bin目錄:

 

復制代碼代碼如下:

[root@localhost go-examples]# ls   
bin pkg src   
[root@localhost go-examples]# ls bin/   
main  

 

的確出現一個bin目錄,并且剛剛編譯的程序main在bin下面。

hello.go編譯后并非可執行程序,在編譯main的同時,由于main依賴hello package,因此hello也被關聯編譯了。這與單獨在hello目錄下執行install的結果是一樣的,我們試試:

 

復制代碼代碼如下:

[root@localhost src]# cd hello/   
[root@localhost hello]# go install   
[root@localhost hello]# ls /home/go-examples/   
bin pkg src  

 

在我們的workspace(go-examples目錄)下出現了一個pkg目錄,pkg目錄下是一個名為linux_386的子目錄,其下面有一個文 件:hello.a。這就是我們install的結果。hello.go被編譯為hello.a并安裝到pkg/linux_386目錄下了。

.a這個后綴名讓我們想起了靜態共享庫,但這里的.a卻是Go獨有的文件格式,與傳統的靜態共享庫并不兼容。但Go語言的設計者使用這個后綴名似乎是希望 這個.a文件也承擔起Go語言中"靜態共享庫"的角色。我們不妨來試試,看看這個hello.a是否可以被Go compiler當作"靜態共享庫"來對待。我們移除src中的hello目錄,然后在main目錄下執行go build:

 

復制代碼代碼如下:

[root@localhost main]# go build   
main.go:4:8: import "hello": cannot find package  

 

Go編譯器提示無法找到hello這個包,可見目前版本的Go編譯器似乎不理pkg下的.a文件。http://code.google.com/p/go/issues/detail?id=2775 這個issue也印證了這一點,不過后續Go版本很可能會支持鏈接.a文件。畢竟我們在使用第三方package的時候,很可能無法得到其源碼,并且在每個項目中都保存一份第三方包的源碼也十分不利于項目源碼的后期維護。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美下载看逼逼| 中文字幕av一区 二区| 蜜桃色一区二区三区| 水蜜桃亚洲精品| 国产精品欧美激情| 欧美激情a在线| 日韩精品www| 欧美亚洲国产一区在线观看网站| 国产精品色呦呦| 国产91色综合久久免费分享| 国产成a人亚洲精v品无码| 久久午夜鲁丝片午夜精品| 中文在线字幕观看| 成人综合久久网| www.好吊操| 亚洲欧洲日夜超级视频| 国产精品久久久久久久久久直播 | 成人精品小视频| 午夜精品电影在线观看| 国产精品成人观看视频免费| 国产精品亚洲美女av网站| 欧美肥婆姓交大片| 久久久国产成人精品| 亚洲日韩中文字幕| 亚洲国产日韩欧美在线动漫| 欧美精品一区在线观看| 欧美一级国产精品| 日韩午夜电影av| 欧美裸体bbwbbwbbw| 欧洲色大大久久| 欧美综合在线视频| 欧美在线高清视频| 7777精品伊人久久久大香线蕉的 | av在线不卡电影| 国内欧美视频一区二区| 狠狠色丁香九九婷婷综合五月| 美女在线视频一区| 国产高清在线精品| 99久久精品国产网站| 91在线播放网址| 国产亚洲福利社区一区| 中文乱码免费一区二区 | 中国女人做爰视频| 日韩一级片一区二区| 久久亚洲国产成人精品无码区| www.在线观看av| 37pao成人国产永久免费视频| 天天干天天爽天天射| 爱爱爱爱免费视频| 成人免费无码大片a毛片| 国产精品久久久久久久av| 欧美视频一区二区在线| 中文字幕在线字幕中文| 国产精品永久久久久久久久久| 亚洲乱码精品久久久久.. | 国产精品老牛影院在线观看| 亚洲精品免费av| 亚洲bbw性色大片| 精品久久一二三| 交换做爰国语对白| 日本黄区免费视频观看| 色av性av丰满av| 少妇高潮一区二区三区99小说| 久久国产精品99久久人人澡| 91在线精品一区二区| 亚洲精品国产无天堂网2021| 欧美三级电影在线看| 日韩成人在线视频网站| 国自在线精品视频| 国产自产在线视频一区| 国产一级大片免费看| 午夜av中文字幕| 小早川怜子一区二区的演员表| 欧美brazzers| 久久激情五月激情| 国产精品狼人久久影院观看方式| 日韩欧美国产视频| 亚洲日韩欧美视频| 国产精品自产拍在线观看中文| 日本不卡一区二区三区视频| 色婷婷狠狠18| 国产又粗又长免费视频| 中文区中文字幕免费看| 极品销魂美女一区二区三区| 一区二区三区在线观看动漫| 日韩av一区在线| 国产精品久久久久久久久久久久| 西游记1978| 又大又长粗又爽又黄少妇视频| 欧洲猛交xxxx乱大交3| 粉嫩av一区二区夜夜嗨| 国产欧美日韩三级| 欧美一级专区免费大片| 69影院欧美专区视频| 日本一区视频在线播放| 狠狠干狠狠操视频| 日本熟妇一区二区| 久久国产综合精品| 欧美性猛交xxxx黑人| 久久精品视频va| 五月天久久综合网| 久久久久久九九九九九| 欧美熟妇另类久久久久久不卡| 欧美国产成人在线| 精品久久久久久久久久久院品网| 国产精品久久久久久久9999| 欧美一区二区中文字幕| 超碰人人干人人| 久久午夜精品| 欧美午夜视频一区二区| 欧美日韩国产成人在线观看| 加勒比海盗1在线观看免费国语版| 色一情一交一乱一区二区三区| 少妇荡乳情欲办公室456视频| 亚洲国产精品久久人人爱| 不用播放器成人网| 亚洲一卡二卡区| 国产亚洲精品久久久久久豆腐| 日韩一区欧美二区| 在线一区二区三区四区五区| 国产精品99免视看9| 成人在线激情网| 中文字幕你懂的| 亚洲欧美日本在线| 久久免费视频在线观看| 日韩 欧美 高清| 一本色道久久综合熟妇| 一个色综合av| 97在线免费观看视频| 国产真实乱子伦| 在线观看黄色国产| 性做久久久久久免费观看 | 国产又黄又粗又硬| 午夜精品福利一区二区三区av | 在线视频精品免费| 国产精品不卡视频| 国自产精品手机在线观看视频| 黄色免费福利视频| 中文字幕免费在线看| 亚洲成人激情自拍| 国产精品视频永久免费播放| 香蕉视频在线观看黄| 日韩va亚洲va欧美va久久| 欧美人牲a欧美精品| 国内成+人亚洲| 久久久精品少妇| 国产欧美日韩在线看| 久久久亚洲影院| 手机版av在线| 久久黄色级2电影| 亚洲精品日韩在线| 极品粉嫩国产18尤物| 国产女同91疯狂高潮互磨| 色先锋久久av资源部| 国产精品福利视频| 久久久精品视频在线 | 国产美女三级视频| 欧美一级免费片| 日韩片之四级片| 日韩精品欧美在线| 少妇久久久久久久| 91麻豆精品国产91久久久资源速度| 精品在线观看一区二区| 久久久久久激情| 亚洲成a人片在线不卡一二三区| 国产欧美精品一区二区三区介绍| 在线不卡av电影| 国产亚洲欧美激情| 国产精品久久久久av| 99热6这里只有精品| 最好看的中文字幕久久| 91亚洲精品丁香在线观看| 久久久久久免费观看| 成人97人人超碰人人99| 26uuu国产精品视频| 一区二区黄色片| 亚洲在线视频免费观看| 久久久久久久有限公司| 日本一区二区三区久久| 日韩欧美黄色影院| 精品中文字幕av| 狠狠色狠狠色合久久伊人| 久久久免费观看视频| 亚洲欧洲久久久| 亚洲午夜三级在线| 亚洲欧美精品| 日韩有码第一页| 久久精品国产亚洲精品| 五级黄高潮片90分钟视频| 亚洲色图20p| 日韩国产精品一区二区三区| 黄色av网址在线| www.欧美免费| 成人无码av片在线观看| 91精品91久久久中77777| 日韩久久久久久久久久久久| 日韩精品一二三四| 日韩av大片在线| 五月天婷婷网站| 精品国产凹凸成av人导航| 亚洲精品免费一区亚洲精品免费精品一区| 白白色亚洲国产精品| 91美女片黄在线观| 久久久久久无码午夜精品直播| 亚洲福利视频专区| 精品国产午夜福利在线观看| 亚洲色图欧美在线| 国产视频在线观看网站| 国产成人综合网| 91精品久久久久久久久中文字幕| 在线视频欧美亚洲| 久久成人精品视频| 久久国产精品波多野结衣av| 日韩视频免费观看高清完整版| gai在线观看免费高清| 亚洲激情综合网| 国产美女无遮挡网站| 国产日本欧美一区二区| 亚洲午夜精品久久| jvid福利写真一区二区三区| 精品乱子伦一区二区三区| 久久精品道一区二区三区| 日本电影亚洲天堂| 国产乱人乱偷精品视频| 欧美一性一乱一交一视频| 亚洲午夜激情视频| 韩国一区二区电影| 最新中文字幕第一页| 欧美激情一区二区三级高清视频| 日韩欧美高清在线观看| 亚洲天堂av在线播放| 曰本女人与公拘交酡| 亚洲社区在线观看| 久久久久亚洲天堂| 色婷婷成人综合| 欧美精品韩国精品| 国内精品一区二区三区| 中文字幕日韩经典| 国产999视频| 天天干视频在线| 国产精品免费一区二区三区| 美女视频黄频大全不卡视频在线播放| 成人福利视频网| 久久99精品国产.久久久久久| 区一区二区三区中文字幕| 成人av在线资源网站| 好色先生视频污| 亚洲精品视频在线观看免费| 黄色一级二级三级| 欧美亚洲综合久久| 性欧美13一14内谢| 国产亚洲精品久久久优势| 日韩免费视频一区二区视频在线观看| 欧美理论电影在线观看| 97免费观看视频| 亚洲自拍小视频免费观看| 国产东北露脸精品视频| 精品一区二区三区毛片| 亚洲国产一区二区a毛片| 人妻精品久久久久中文字幕69| 91精品国产高清一区二区三区| 欧美国产日韩在线观看成人| 久久久久久久久久亚洲| 亚州精品国产精品乱码不99按摩| 蜜桃传媒视频第一区入口在线看| 国产mv日韩mv欧美| 欧美三级午夜理伦三级| 5858s免费视频成人| 国产在线拍揄自揄拍无码视频| 午夜精品久久17c| 亚洲欧美日韩免费| 正在播放国产精品| 欧美日韩国产综合新一区| 丰腴饱满的极品熟妇| 久久在线观看视频| 日韩中文字幕观看| 日本免费在线视频观看| 精品女厕一区二区三区| 色哟哟精品观看| 久久久久久久久国产| 麻豆精品视频在线观看免费 | 亚洲在线免费看| 久久九九国产精品| 中文字幕乱妇无码av在线| 亚洲欧美国产日韩天堂区| 国产免费不卡视频| 日韩高清国产精品| 91久久国产最好的精华液| 国产在线观看成人| 97人人模人人爽人人少妇| 国产精品电影院| 国产福利在线导航| 国产精品女主播视频| 国产日韩欧美不卡| 亚洲码无人客一区二区三区| 4438全国亚洲精品在线观看视频| 成人免费av网站| 四虎永久免费观看| 欧美裸身视频免费观看| 国产美女视频91| 亚洲av无码久久精品色欲| 伦理中文字幕亚洲| 成人一区二区视频| 久久性爱视频网站| 91超碰caoporn97人人| 久久久国产午夜精品| 91香蕉国产视频| 亚洲自拍偷拍网址| 精品二区三区线观看| 丁香六月婷婷综合| 一区二区三区一级片| 日韩女优毛片在线| 无码国产精品高潮久久99| 北条麻妃在线视频| 欧美日韩国产123| 久久久久久久久免费| 欧美a在线播放| 成人蜜桃视频| 欧美亚洲综合网| www.五月激情| 国产野外作爱视频播放| 欧美巨大黑人极品精男| 99久久精品国产观看| 成人涩涩小片视频日本| 国产精品国产三级国产专区53| 色婷婷av一区二区三区软件| 国产熟女一区二区三区五月婷| 国产男女在线观看| 欧美巨乳美女视频| 中文字幕一区av| 日日噜噜噜噜人人爽亚洲精品| 狠狠干视频网站| 在线视频一区二区| 国产午夜精品久久久久久免费视 | 香港三级日本三级| 国产美女精品视频| 在线观看亚洲专区| 五月天激情开心网| 手机在线看片日韩| 国产精品久久7| 精品国一区二区三区| 国产一区二区三区四区五区美女 | 99riav久久精品riav| 天天综合天天做| 一区二区三区观看| 在线观看日韩视频| 国产人伦精品一区二区| 国产精品第5页| 麻豆av免费在线| 日韩美女av在线免费观看| 一本色道久久加勒比精品| 神马一区二区三区| 成年人的黄色片| 亚洲mv在线看| 欧美精品xxx| 91高清视频在线| 精品一区二区久久| 欧美做爰爽爽爽爽爽爽| 国产美女永久无遮挡| 欧美一级淫片播放口| 在线观看亚洲精品| 国产麻豆视频精品| 日本少妇性高潮| 能在线观看的av网站| 成人久久久久爱| 亚洲第一男人av| 国产精品久久久久久久久久久免费看| 欧美一级做a爰片免费视频| 亚洲欧美aaa| 日本在线观看不卡| 久久久久久久色| 91精品免费在线观看| 26uuu精品一区二区三区四区在线| 国产成人a v| av网页在线观看| 好吊色这里只有精品| 69久久夜色精品国产69乱青草| 欧美日韩性生活| 风流少妇一区二区| 91精品国自产| 色婷婷国产精品免| 动漫av免费观看| 日韩国产欧美精品| 国产精品成人av性教育| 精品国产一区二区三区忘忧草| 国产精品污www在线观看| 玖玖玖国产精品| 日韩大片免费在线观看| 久久久久无码精品| 日本丰满大乳奶| 91理论片午午论夜理片久久| 中文字幕欧美亚洲| 91久久人澡人人添人人爽欧美| 成人h精品动漫一区二区三区| 国产黄a三级三级三级| www色aa色aawww| 黄大色黄女片18第一次| 五月天久久综合网| 国产在线视频91| 久久99国产精品自在自在app| 欧美高清一级片在线| 亚洲欧美一区二区三区国产精品| 精品亚洲国产成人av制服丝袜| 日韩不卡高清视频| 欧美三级黄色大片| 黄色片子免费看| 久草热视频在线观看| 亚洲精品自在在线观看| 国产富婆一区二区三区| 国产www精品|