




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章
源代碼組織與管理Go語(yǔ)言的包01包的概念包的概念Go語(yǔ)言的包采用目錄樹(shù)的組織形式,一般包的名稱(chēng)就是其源文件所在的目錄名,雖然Go并不強(qiáng)制包名必須與其所在的目錄同名,但還是建議讀者在開(kāi)發(fā)項(xiàng)目時(shí)取相同的名字,這樣可使項(xiàng)目結(jié)構(gòu)更清晰。此外,在給包取名時(shí)還應(yīng)遵守下面兩個(gè)習(xí)慣:(1)包名一般全是小寫(xiě),并盡可能地用一個(gè)有意義的簡(jiǎn)短命名。(2)實(shí)際工作中,包一般放到公司的域名目錄下,這樣既能保證包名的唯一性,又便于代碼共享,比如一家名為easybooks公司所開(kāi)發(fā)項(xiàng)目的包一般放到“src\\項(xiàng)目名”目錄下。02包的工作目錄1.Go環(huán)境變量2.目錄結(jié)構(gòu)包的工作目錄1.Go環(huán)境變量在Go編程環(huán)境中,包的工作目錄與幾個(gè)重要的環(huán)境變量息息相關(guān),先介紹一下。(1)$GOROOT這是Go語(yǔ)言安裝的根目錄。在Windows下安裝包會(huì)自動(dòng)設(shè)置,默認(rèn)是C:\ProgramFiles\Go,如果不是安裝在這個(gè)默認(rèn)目錄,則必須顯式地設(shè)置$GOROOT環(huán)境變量。(2)$GOPATH這是Go程序開(kāi)發(fā)的工作目錄,類(lèi)似于Java語(yǔ)言的工作區(qū)(Workspace)。Windows下默認(rèn)是C:\Users\<用戶(hù)名>\go,其中“用戶(hù)名”為操作系統(tǒng)當(dāng)前的登錄用戶(hù)名。(3)$GOBIN這是帶有main函數(shù)的源程序執(zhí)行g(shù)oinstall命令時(shí)生成的可執(zhí)行程序安裝目錄,默認(rèn)是$GOPATH\bin。如果想在任何路徑執(zhí)行安裝的程序,可以將$GOBIN添加到Windows系統(tǒng)環(huán)境變量Path中。包的工作目錄(4)$GOOS與$GOARCH$GOOS用來(lái)設(shè)置目標(biāo)操作系統(tǒng),$GOARCH用來(lái)設(shè)置目標(biāo)平臺(tái)的CPU體系結(jié)構(gòu)。這兩個(gè)變量主要用在Go程序跨平臺(tái)的交叉編譯中,一般不用設(shè)置。以管理員身份打開(kāi)Windows命令行,用goenv命令可查看Go編程環(huán)境當(dāng)前各變量的值,如圖。包的工作目錄2.目錄結(jié)構(gòu)$GOPATH環(huán)境變量所指定的目錄就是Go程序包默認(rèn)的工作目錄。在用傳統(tǒng)方式開(kāi)發(fā)Go項(xiàng)目時(shí),會(huì)在工作目錄下創(chuàng)建3個(gè)子目錄,如圖。包的工作目錄(1)src目錄包含了組成各種包的源代碼。通常在src下的第一層是根目錄(一般是公司域名),根目錄下才是各個(gè)項(xiàng)目的目錄,項(xiàng)目目錄下可以是其源代碼文件及各種包,這是一種推薦的代碼組織結(jié)構(gòu),例如:$GOPATH\src\\grpc其中,“$GOPATH\src\”就是根目錄,“grpc”則是具體的項(xiàng)目目錄,而grpc內(nèi)則是該項(xiàng)目的源代碼文件和包。(2)pkg目錄用于存放各包編譯生成的類(lèi)庫(kù)。(3)bin目錄用于存放包編譯或安裝后生成的可執(zhí)行(.exe)文件。其中,src目錄必須由用戶(hù)自己建立用于包含所有的源代碼,這是Go的強(qiáng)制規(guī)定,而另兩個(gè)(pkg和bin)目錄則無(wú)須手動(dòng)創(chuàng)建,必要時(shí)Go命令行工具在構(gòu)建項(xiàng)目的過(guò)程中會(huì)自動(dòng)創(chuàng)建它們。03包的使用1.導(dǎo)入包2.引用路徑3.包的加載4.包的作用域包的使用1.導(dǎo)入包用import語(yǔ)句導(dǎo)入包,有4種引用方式,這里以Go的fmt標(biāo)準(zhǔn)庫(kù)(包)為例說(shuō)明如下。(1)標(biāo)準(zhǔn)方式import"fmt"這是最常用的一種方式,導(dǎo)入后可以用“fmt.”作為前綴引用包內(nèi)的可導(dǎo)出元素,如:fmt.Println("Hello,我愛(ài)Go語(yǔ)言!@easybooks")(2)別名方式importsay"fmt"相當(dāng)于給包fmt起了個(gè)別名say,用“say.”代替標(biāo)準(zhǔn)的“fmt.”作為前綴引用包內(nèi)元素,語(yǔ)句寫(xiě)成:say.Println("Hello,我愛(ài)Go語(yǔ)言!@easybooks")(3)省略方式import."fmt"這相當(dāng)于把包fmt的命名空間與當(dāng)前程序的命名空間直接合并,合并后就可不用前綴直接引用fmt包內(nèi)元素,簡(jiǎn)寫(xiě)成:Println("Hello,我愛(ài)Go語(yǔ)言!@easybooks")包的使用(4)僅執(zhí)行包初始化函數(shù)當(dāng)使用標(biāo)準(zhǔn)方式導(dǎo)入了包但是代碼中卻沒(méi)有使用此包,編譯器會(huì)報(bào)錯(cuò),可改用“import_"包名"”這種方式導(dǎo)入包,它僅執(zhí)行包的init初始化函數(shù),即使包沒(méi)有初始化函數(shù)也不會(huì)引發(fā)編譯器報(bào)錯(cuò),如:packagemainimport_"fmt"funcmain(){ //無(wú)代碼}包的使用2.引用路徑Go語(yǔ)言所有內(nèi)置標(biāo)準(zhǔn)包的源碼都位于$GOROOT\src下,可以直接引用。而自定義或第三方包的源碼則必須放到$GOPATH\src目錄下才能被引用。引用一個(gè)包可以用全路徑或相對(duì)路徑,寫(xiě)法如下。(1)全路徑全路徑就是包的根路徑($GOROOT\src或$GOPATH\src)后面包源碼的完整路徑,例如,下面這幾個(gè)包的引用路徑:import"/MyBmi/bmi"import"/grpc/peer"import"database/sql/driver"其中,bmi是自定義的包,其源碼保存在$GOPATH\src\\MyBmi\bmi目錄下;peer是第三方(谷歌開(kāi)發(fā)的gRPC框架)的包,從網(wǎng)絡(luò)下載的源碼位于$GOPATH\src\\grpc\peer下;driver是Go語(yǔ)言?xún)?nèi)置的包,源碼在$GOROOT\src\database\sql\driver下。(2)相對(duì)路徑比如有兩個(gè)包:包a的路徑是$GOPATH\src\\a,包b的路徑是$GOPATH\src\\b,現(xiàn)假設(shè)b要引用a包,則可以使用相對(duì)路徑引用方式,如下:import"../a"相對(duì)路徑只能用于引用$GOPATH下的包,而標(biāo)準(zhǔn)包的引用只能使用全路徑。包的使用3.包的加載程序啟動(dòng)時(shí),在執(zhí)行入口(main)函數(shù)之前,Go的引導(dǎo)程序會(huì)先對(duì)整個(gè)程序中的包進(jìn)行初始化并逐個(gè)加載包,流程如下。(1)引導(dǎo)程序從入口函數(shù)導(dǎo)入的包開(kāi)始,逐級(jí)查找包的引用,直到找到?jīng)]有引用其他包的包,最終生成一個(gè)包引用的有向無(wú)環(huán)圖。(2)然后,編譯器將有向無(wú)環(huán)圖轉(zhuǎn)換為一棵樹(shù),從樹(shù)的葉子節(jié)點(diǎn)開(kāi)始逐層向上對(duì)包進(jìn)行初始化。(3)對(duì)單個(gè)包,先初始化其常量,然后是全局變量,最后才執(zhí)行包的init函數(shù)(如果有)。一個(gè)包可以有多個(gè)init函數(shù),初始化時(shí)會(huì)執(zhí)行全部的init函數(shù),但并不能保證執(zhí)行順序,所以不建議在一個(gè)包中放入多個(gè)init函數(shù),而是將需要初始化的邏輯寫(xiě)在一個(gè)init函數(shù)里。包的使用4.包的作用域作用域(scope)是指程序代碼中標(biāo)識(shí)符的名字與實(shí)例(內(nèi)存地址)的綁定保持對(duì)應(yīng)有效的邏輯區(qū)間,簡(jiǎn)言之,就是在多大的范圍內(nèi)可見(jiàn)(能夠訪(fǎng)問(wèn))這個(gè)標(biāo)識(shí)符。Go語(yǔ)言是靜態(tài)作用域語(yǔ)言,其標(biāo)識(shí)符的可見(jiàn)范圍不依賴(lài)程序運(yùn)行時(shí)的因素,在編譯期就能完全確定。Go語(yǔ)言用命名空間(Namespace)來(lái)表示標(biāo)識(shí)符的可見(jiàn)范圍,一個(gè)標(biāo)識(shí)符可在多個(gè)命名空間中定義,它在不同命名空間中的含義是互不相干的。這意味著在一個(gè)新的命名空間中可定義任意名字的標(biāo)識(shí)符,而不會(huì)與其他命名空間的同名標(biāo)識(shí)符發(fā)生沖突。包名構(gòu)成了Go命名空間的一部分,不同的包可看作是一個(gè)獨(dú)立的命名空間,因此在不同包內(nèi)可以聲明相同的標(biāo)識(shí)符。Go語(yǔ)言包內(nèi)以大寫(xiě)字母開(kāi)頭的標(biāo)識(shí)符(包括變量、常量、函數(shù)和方法名、自定義類(lèi)型、類(lèi)的屬性等),它們具有全局作用域,在任意命名空間內(nèi)都可見(jiàn);而包內(nèi)定義的以小寫(xiě)字母開(kāi)頭的標(biāo)識(shí)符卻僅在本包可見(jiàn),在其他包都是不可見(jiàn)的,這些標(biāo)識(shí)符只具有包內(nèi)作用域。包的使用【實(shí)例5.1】主程序訪(fǎng)問(wèn)同一包內(nèi)的另一源文件。在$GOPATH\src(筆者的為C:\Users\Administrator\go\src)下建立根目錄“”,其下再建一個(gè)項(xiàng)目目錄“MyBmi”。然后用Windows記事本在項(xiàng)目目錄中創(chuàng)建兩個(gè)Go源文件:human.go與main.go。(1)human.go中定義Human類(lèi)及其屬性和方法(首字母全為小寫(xiě)),代碼。(2)main.go作為主程序使用Human類(lèi),代碼如下:packagemainimport"fmt"funcmain(){ man:=Human{} man.setName("周何駿") man.setHeight(1.73) man.setWeight(60) man.setAge(19) fmt.Println(man.getName(),"BMI指數(shù)是",man.bmiCal())}包的使用(3)運(yùn)行以管理員身份打開(kāi)Windows命令行,先后執(zhí)行如下命令:cdC:\Users\Administrator\go\src\\MyBmigorunmain.gohuman.go運(yùn)行過(guò)程如圖。包的使用【實(shí)例5.2】主程序訪(fǎng)問(wèn)不同包下的另一源文件。(1)在上例所建的項(xiàng)目目錄MyBmi下新建一個(gè)目錄bmi作為包,將源文件human.go放到包中,代碼改為。(2)將主程序main.go的代碼寫(xiě)成如下:packagemainimport( "fmt" "/MyBmi/bmi" //全路徑引用包)funcmain(){ man:=bmi.Human{} man.Name="周何駿" //直接訪(fǎng)問(wèn)Name屬性 man.SetHeight(1.73) man.SetWeight(60) man.SetAge(19) fmt.Println(man.Name,"BMI指數(shù)是",man.BmiCal())}包的使用(3)運(yùn)行在Windows命令行下執(zhí)行:cdC:\Users\Administrator\go\src\\MyBmigorunmain.go運(yùn)行過(guò)程如圖。包的使用若將main.go中的語(yǔ)句“man.SetHeight(1.73)”改成“man.height=1.73”,由于height(身高)屬性首字母是小寫(xiě),包外部的程序無(wú)法直接訪(fǎng)問(wèn),運(yùn)行出錯(cuò),如圖。第5章
源代碼組織與管理第三方包01安裝第三方包1.獲取安裝2.編譯安裝安裝第三方包1.獲取安裝使用goget命令可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程獲?。ɑ蚋拢┑谌桨捌湟蕾?lài)包,自動(dòng)完成編譯和安裝,命令格式為:goget-參數(shù)帶全路徑的包名這里的“全路徑”指的是包的完整網(wǎng)絡(luò)訪(fǎng)問(wèn)路徑,goget命令據(jù)此動(dòng)態(tài)獲取遠(yuǎn)程代碼托管平臺(tái)倉(cāng)庫(kù)中的包,目前支持的主要托管平臺(tái)有Github、Gitee(碼云)等。例如:goget-u/golang/protobuf/protoc-gen-go這個(gè)命令會(huì)自動(dòng)到Github上去獲取一個(gè)名為protoc-gen-go的插件,-u參數(shù)表示讓命令通過(guò)網(wǎng)絡(luò)來(lái)動(dòng)態(tài)地更新已有的包及其依賴(lài)包,一般都要帶這個(gè)參數(shù),除此之外,goget命令還有一些其他參數(shù),功能見(jiàn)表。參
數(shù)功
能
描
述-d只下載包而不安裝-f忽略對(duì)已下載包導(dǎo)入路徑的檢查-fix在下載包后先進(jìn)行修正,然后再編譯和安裝-insecure允許使用非安全通道(如HTTP而非HTTPS)去下載包-t同時(shí)下載并安裝指定包測(cè)試文件中的依賴(lài)包安裝第三方包2.編譯安裝有時(shí)候,所需的第三方包沒(méi)有現(xiàn)成的可安裝版本,可先下載其源代碼,然后再編譯安裝。1)下載源代碼下載源代碼需要借助與遠(yuǎn)程包相匹配的代碼管理工具,如Git、SVN、HG等,下面以Git為例介紹基本的操作方法。(1)安裝Git訪(fǎng)問(wèn)/downloads,下載Git,得到可執(zhí)行文件Git-2.41.0-64-bit.exe,雙擊啟動(dòng)安裝向?qū)В鐖D。安裝第三方包(2)啟動(dòng)GitBash安裝Git后可在開(kāi)始菜單左上的“最近添加”中看到3個(gè)啟動(dòng)圖標(biāo),如圖。安裝第三方包其中,第3個(gè)“GitBash”是Git配套的控制臺(tái),下載源代碼的命令就通過(guò)它來(lái)執(zhí)行,雙擊啟動(dòng)控制臺(tái),出現(xiàn)窗口如圖5.8所示,在“$”提示符后輸入命令。安裝第三方包(3)克隆下載使用gitclone命令以“克隆”方式下載源代碼,該命令可以復(fù)制遠(yuǎn)程倉(cāng)庫(kù)的所有代碼和歷史記錄,并在本地創(chuàng)建一個(gè)與遠(yuǎn)程倉(cāng)庫(kù)完全相同的倉(cāng)庫(kù)的副本。通常將遠(yuǎn)程倉(cāng)庫(kù)中包(及其依賴(lài)組件)的源碼克隆到本地的$GOPATH\src目錄下,命令格式為:gitclonehttps://遠(yuǎn)程倉(cāng)庫(kù)路徑/文件名.git$GOPATH/src/本地路徑其中,“本地路徑”是下載到本地的包的源代碼存放路徑,不一定要與遠(yuǎn)程倉(cāng)庫(kù)路徑相同。例如:gitclone/grpc/grpc-go.git$GOPATH/src//grpc將Github遠(yuǎn)程倉(cāng)庫(kù)中g(shù)rpc-go包的源代碼下載到本地$GOPATH\src目錄中的\grpc路徑下,Git會(huì)自動(dòng)創(chuàng)建存放源碼路徑上的各級(jí)文件夾目錄。2)編譯安裝有了源代碼,就可以將其編譯成可運(yùn)行的包并安裝到Go環(huán)境中,使用goinstall命令進(jìn)行編譯安裝。首先由GitBash控制臺(tái)進(jìn)入到$GOPATH\src目錄,執(zhí)行命令:cd$GOPATH/src/然后執(zhí)行g(shù)oinstall命令,格式為:goinstall本地路徑(即源代碼存放路徑)@latest最后加“@latest”是為了將安裝的包與其在網(wǎng)絡(luò)上能夠找到的最新版本同步。02包的管理1.包管理概述2.gomodule工具包的管理1.包管理概述1)vendor機(jī)制在很長(zhǎng)一段時(shí)間內(nèi),Go官方并沒(méi)有第三方包管理的解決方案,直到Go1.5引入了vendor機(jī)制,才為Go外部包的管理提供了有限的支持。該機(jī)制是在當(dāng)前包中引入一個(gè)vendor目錄,將該包所依賴(lài)的外部包復(fù)制到這個(gè)目錄下,編譯器在查找所需的第三方包時(shí),也優(yōu)先在該目錄下找,流程如下。(1)如果當(dāng)前包下有vendor目錄,先從其下查找第三方的包,若找到就使用;若沒(méi)找到或者當(dāng)前包下根本就沒(méi)有vendor目錄,繼續(xù)第(2)步。(2)沿當(dāng)前包目錄向上逐級(jí)查找直到$GOPATH\src,其間只要發(fā)現(xiàn)一個(gè)vendor目錄就去里面查找,使用找到的第一個(gè)符合要求的包。(3)到$GOPATH下查找。(4)最終去到$GOROOT下查找。包的管理2)版本管理如果第三方包更新了,新版本與舊版本又不兼容怎么辦?廣大Go程序員迫切需要對(duì)第三方包進(jìn)行更精細(xì)的管理,尤其對(duì)包的版本做精確的管控。起初,在Go社區(qū)出現(xiàn)了很多包管理工具,如godep、govendor、glide等,但是由于不同管理工具采用的是不同的元信息格式(如godep用Godeps.json、glide用glide.yaml),不利于社區(qū)發(fā)展,也嚴(yán)重違背了Go語(yǔ)言所追求的開(kāi)箱即用、簡(jiǎn)單快速的設(shè)計(jì)理念。為了避免語(yǔ)言和工具的分裂,維護(hù)Go的設(shè)計(jì)理念,官方先是提供了一個(gè)叫作dep的工具,但并未馬上集成到Go工具鏈,Go核心團(tuán)隊(duì)通過(guò)它來(lái)吸取實(shí)際使用經(jīng)驗(yàn)并收集社區(qū)的反饋,不斷實(shí)驗(yàn)、探索如何有效管理包版本,在此基礎(chǔ)上終于開(kāi)發(fā)出一個(gè)統(tǒng)一、強(qiáng)大的包管理工具gomodule,并于2019年9月3日發(fā)布的Go1.13中開(kāi)始正式支持。包的管理2.gomodule工具gomodule以“模塊(Module)”為基本單元來(lái)管理包,一個(gè)任意名稱(chēng)的目錄(包括空目錄)都可以作為模塊,只要其中包含go.mod文件。通常開(kāi)發(fā)中將項(xiàng)目整體作為一個(gè)模塊,程序中引用包都是基于當(dāng)前模塊(項(xiàng)目)的相對(duì)路徑,簡(jiǎn)化了編程。使用gomodule管理一個(gè)項(xiàng)目包的步驟如下。(1)將Go的環(huán)境變量GO111MODULE設(shè)置為on,開(kāi)啟gomodule功能。(2)創(chuàng)建模塊通過(guò)以下命令創(chuàng)建一個(gè)新的模塊:gomodinit模塊名創(chuàng)建后會(huì)在當(dāng)前包目錄下生成一個(gè)go.mod文件,內(nèi)容為:module模塊名go1.xx包的管理(3)管理第三方包有了go.mod文件后,項(xiàng)目開(kāi)發(fā)過(guò)程中g(shù)omodule就會(huì)自動(dòng)地為用戶(hù)進(jìn)行包管理,如果用戶(hù)想在項(xiàng)目中引入一個(gè)第三方包,比如要使用當(dāng)前流行的Go-kit框架(用于微服務(wù)開(kāi)發(fā)),就可以在go.mod文件中添加一句:require/go-kit/kitv0.12.0用require關(guān)鍵字引入該框架的0.12.0版本,然后就可以通過(guò)執(zhí)行以下命令來(lái)手動(dòng)下載這個(gè)框架及其依賴(lài)的所有第三方包:gomoddownload用戶(hù)可以通過(guò)執(zhí)行g(shù)omodvendor命令生成vendor目錄,在其中集中放置go.mod文件描述的所有第三方包,還可以使用gomodtidy命令更新依賴(lài)關(guān)系,拉取缺少的包和移除不用的包。包的管理【實(shí)例5.3】將【實(shí)例5.2】的項(xiàng)目納入gomodule管理。操作步驟如下。(1)在本地計(jì)算機(jī)的任一位置(如筆者是在C:\Users\Administrator)新建一個(gè)文件夾,其中創(chuàng)建項(xiàng)目目錄MyBmi。(2)以管理員身份打開(kāi)Windows命令行,執(zhí)行如下命令打開(kāi)gomodule功能:goenv-wGO111MODULE=on可運(yùn)行g(shù)oenv命令查看是否開(kāi)啟成功,如圖。包的管理(3)將【實(shí)例5.2】項(xiàng)目MyBmi中的bmi包目錄(內(nèi)含human.go)及主程序main.go一起復(fù)制到本例項(xiàng)目目錄MyBmi中,然后通過(guò)命令行進(jìn)入其中執(zhí)行創(chuàng)建模塊的命令:cdC:\Users\Administrator\\MyBmigomodinitMyBmi過(guò)程如圖。包的管理命令執(zhí)行后在MyBmi目錄中可見(jiàn)已經(jīng)生成了go.mod文件,如圖。用Windows記事本打開(kāi)go.mod文件,可見(jiàn)其內(nèi)容如下:moduleMyBmigo1.20這表示gomodule已將MyBmi項(xiàng)目視為一個(gè)模塊加以管理了。包的管理(4)啟動(dòng)GoLand,選擇“File”→“Open...”,彈出“OpenFileorProject”對(duì)話(huà)框,展開(kāi)目錄樹(shù)進(jìn)入到C:\Users\Administrator下的文件夾,選中MyBmi目錄,單擊“OK”按鈕,如圖,可在GoLand集成開(kāi)發(fā)環(huán)境中打開(kāi)此項(xiàng)目。包的管理(5)打開(kāi)main.go,將導(dǎo)入bmi包的路徑由全路徑改為模塊相對(duì)路徑,如下:packagemainimport( "MyBmi/bmi" //用模塊相對(duì)路徑引用包 "fmt")funcmain(){ ...//主程序代碼,略。}(6)用GoLand運(yùn)行main.go,結(jié)果如圖。包的管理事實(shí)上,GoLand就是通過(guò)gomodule工具來(lái)管理其Go項(xiàng)目的,在用戶(hù)創(chuàng)建項(xiàng)目的時(shí)候就會(huì)自動(dòng)在所建的項(xiàng)目目錄中生成go.mod文件,大家可以打開(kāi)之前用GoLand創(chuàng)建的項(xiàng)目自己去看一下,也只有包含go.mod文件的目錄才會(huì)被GoLand識(shí)別為是一個(gè)Go項(xiàng)目,故本例若沒(méi)有事先用gomodinit命令生成go.mod文件,而試圖直接用GoLand打開(kāi)項(xiàng)目目錄就會(huì)出現(xiàn)如圖所示的錯(cuò)誤。第5章
源代碼組織與管理Go語(yǔ)言與C語(yǔ)言Go語(yǔ)言與C語(yǔ)言在Go語(yǔ)言工具包中有一個(gè)Cgo命令,專(zhuān)用來(lái)處理Go調(diào)用C相關(guān)的操作,用戶(hù)可以直接使用該命令,也可以在運(yùn)行或構(gòu)建Go程序時(shí)自動(dòng)調(diào)用它。Cgo對(duì)于C代碼的處理要依賴(lài)系統(tǒng)中C語(yǔ)言相關(guān)的編譯工具,如gcc,在Go環(huán)境變量中默認(rèn)已開(kāi)啟了對(duì)Cgo的支持,如圖。Go語(yǔ)言與C語(yǔ)言【實(shí)例5.4】用Go語(yǔ)言調(diào)用C代碼實(shí)現(xiàn)圓面積和周長(zhǎng)的計(jì)算。(1)編寫(xiě)C代碼在GoLand的默認(rèn)項(xiàng)目awesomeProject目錄下用Windows記事本創(chuàng)建一個(gè)C語(yǔ)言源文件circle.c,代碼如下:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版九年級(jí)化學(xué)上冊(cè)-《愛(ài)護(hù)水資源》思維導(dǎo)圖課件
- 沈陽(yáng)五上數(shù)學(xué)期末試卷及答案
- 上海初一期中試卷及答案
- 山東聊城2024會(huì)考試卷及答案
- 雨污水管網(wǎng)系統(tǒng)常用產(chǎn)品及產(chǎn)品介紹
- 2025年中國(guó)氟塑料襯里數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 稀土金屬壓延加工的精度控制考核試卷
- 羊的飼養(yǎng)肉質(zhì)評(píng)價(jià)標(biāo)準(zhǔn)考核試卷
- 糕點(diǎn)烘焙店的國(guó)際市場(chǎng)開(kāi)拓考核試卷
- 硫酸鑭在催化劑制備中的應(yīng)用技術(shù)考核試卷
- 期中模擬卷(新疆專(zhuān)用)-2024-2025學(xué)年八年級(jí)英語(yǔ)下學(xué)期核心素養(yǎng)素質(zhì)調(diào)研模擬練習(xí)試題(考試版)A4
- 甲狀旁腺切除術(shù)后的護(hù)理措施
- 2024慢性鼻竇炎診斷和治療指南解讀課件
- (T8聯(lián)考)2025屆高三部分重點(diǎn)中學(xué)3月聯(lián)合測(cè)評(píng)生物試卷(含答案詳解)河北版
- 員工入職申請(qǐng)表(完整版)
- T-GDEIIA 56-2024 垂直起降低空航空器起降場(chǎng)基礎(chǔ)設(shè)施配置技術(shù)要求
- 整本書(shū)閱讀《林海雪原》【知識(shí)精研】六年級(jí)語(yǔ)文下冊(cè) (統(tǒng)編版五四制2024)
- 9《我的戰(zhàn)友邱少云》說(shuō)課稿-2024-2025學(xué)年六年級(jí)語(yǔ)文上冊(cè)統(tǒng)編版
- 亞朵酒店前臺(tái)培訓(xùn)
- 大學(xué)假期安全主題班會(huì)課件
- 創(chuàng)業(yè)培訓(xùn)講師手冊(cè)
評(píng)論
0/150
提交評(píng)論