真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言以包組織代碼的原因是什么

這篇文章主要介紹了go語(yǔ)言以包組織代碼的原因是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇go語(yǔ)言以包組織代碼的原因是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

創(chuàng)新互聯(lián)公司成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元自流井做網(wǎng)站,已為上家服務(wù),為自流井各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

原因:將程序所有的代碼都放入一個(gè)源碼文件是不合理的,需要分文件管理相關(guān)代碼,但是隨著程序文件的增多,也必須有一種將文件加以組織管理的方式/形式,于是Go引入了“包”的概念。包是程序功能/屬性“分散管理” 、“歸一使用”的一種邏輯意義上的組織形式。

包介紹

我們用go語(yǔ)言開(kāi)發(fā)的程序文件稱之為源碼文件(源碼文件必須以.go結(jié)尾)。很明顯將程序所有的代碼都放入一個(gè)源碼文件是不合理的,需要分文件管理相關(guān)代碼,但是隨著程序文件的增多,也必須有一種將文件加以組織管理的方式/形式,于是Go引入了”包“的概念。

包是go語(yǔ)言提供的一種虛擬的概念,包聲明一致的多個(gè)源碼文件在邏輯上被組織到一起、同屬于一個(gè)包。

Go語(yǔ)言的包借助了目錄樹(shù)的組織形式,一般包的名稱就是其源文件所在目錄的名稱,雖然Go語(yǔ)言沒(méi)有強(qiáng)制要求包名必須和其所在的目錄名同名,但還是建議包名和所在目錄同名,這樣結(jié)構(gòu)更清晰。

包可以定義在很深的目錄中,包名的定義是不包括目錄路徑的,但是包在引用時(shí)一般使用全路徑引用。比如在GOPATH/src/a/b/ 下定義一個(gè)包 c。在包 c 的源碼中只需聲明為package c,而不是聲明為package a/b/c,但是在導(dǎo)入 c 包時(shí),需要帶上路徑,例如import "a/b/c"。

包的習(xí)慣用法:

  • 包名一般是小寫的,使用一個(gè)簡(jiǎn)短且有意義的名稱。

  • 包名一般要和所在的目錄同名,也可以不同,包名中不能包含- 等特殊符號(hào)。

  • 包一般使用域名作為目錄名稱,這樣能保證包名的唯一性,比如 GitHub 項(xiàng)目的包一般會(huì)放到GOPATH/src/github.com/userName/projectName 目錄下。

  • 包名為 main 的包為應(yīng)用程序的入口包,編譯不包含 main 包的源碼文件時(shí)不會(huì)得到可執(zhí)行文件。

  • 一個(gè)文件夾下的所有源碼文件只能屬于同一個(gè)包,同樣屬于同一個(gè)包的源碼文件不能放在多個(gè)文件夾下。

(1)包的聲明、包的導(dǎo)入路徑、注意的問(wèn)題

//一:包的聲明
// 1、每個(gè)源碼文件都必須在文件頭處聲明自己歸屬的包。
package 包名 // 包名一般總是用小寫字母

// 2、包名任意,包名一致的屬于同一個(gè)包

// 3、包是編譯和歸檔Go程序的最基本單位,一個(gè)包中的多個(gè)源碼文件是一個(gè)不可分割的整體

//二:包的導(dǎo)入路徑
強(qiáng)調(diào)強(qiáng)調(diào)強(qiáng)調(diào)?。。。。?!
包是一個(gè)把多個(gè)源碼文件歸一到一起管理的虛擬單位,一定要記住,它只是一個(gè)虛擬的概念而已,而實(shí)實(shí)在在地講,多個(gè)源碼文件是要放置到一個(gè)實(shí)實(shí)在在的文件夾下的,這個(gè)實(shí)實(shí)在在的文件夾所處的路徑是包的導(dǎo)入路徑。包的導(dǎo)入路徑很重要,他是包的"家庭住址",是用來(lái)找到包的(用在import語(yǔ)句中,稍后介紹),但它絕不等同于包的概念

//三:注意的問(wèn)題
1、一個(gè)文件夾下只能放置一個(gè)包,也就是所一個(gè)文件夾下放置的多個(gè)源碼文件的包聲明必須一致,go以此來(lái)確保一個(gè)路徑就唯一定位到唯一的一個(gè)包。
2、包雖然與文件夾路徑是截然不同的意思,但是為了方便記憶,包通常應(yīng)該聲明為文件夾的名字
例如文件夾路徑/a/b/c/mypkg,包名應(yīng)聲明為package mypkg,mypkg就為包名

go語(yǔ)言以包組織代碼的原因是什么

(2)包的區(qū)分與放置位置

包是虛擬的、邏輯層面的概念,但包組織的多個(gè)源碼文件確實(shí)是實(shí)實(shí)在在的,一定要放置在某一文件夾下.

請(qǐng)注意:為了后續(xù)書寫簡(jiǎn)潔,筆者直接將包所組織的多個(gè)源碼文件的存放位置簡(jiǎn)稱為包的存放位置,請(qǐng)讀者務(wù)必知曉。

main包包含著程序的入口,主要用來(lái)運(yùn)行,無(wú)論如何,main包可以被放置于任意文件夾下。

筆者將main包之外的包稱之為其他包,具體是指內(nèi)置包、自定義包、下載的第三方包。有別于main包,其他包主要用來(lái)被導(dǎo)入使用,放置位置如下

// 內(nèi)置包
內(nèi)置包固定被放置在`$GOROOT/src/`下,與任何模式無(wú)關(guān)

// 自定義包
在未啟用modules模式的情況下,自定義包需要放置在GOPATH指定的任意目錄下的src中

// 下載的第三方包
在未啟用modules模式的情況下,使用go工具鏈命令下載的第三方包總是默認(rèn)被存放到GOPATH的第一個(gè)目錄的src下 


// 強(qiáng)調(diào)一下
在早期的Go環(huán)境中,自定義的包與下載的第三方包都是放到了$GOPATH/src下,因?yàn)樵缙贕o采用的是和GOPATH模式,而且即便是在GO1.14.2版本中,在我們還未學(xué)習(xí)如何使用任何新模式前,默認(rèn)使用的仍是GOPATH模式

ps:

1、內(nèi)置包是筆者對(duì)標(biāo)準(zhǔn)包的一種愛(ài)稱

2、但凡存放于GOPATH工作區(qū)中的包,官方都稱之為工作區(qū)包

(3)包的使用

// 1、一個(gè)源碼文件中聲明的函數(shù)、類型、變量和常量等標(biāo)識(shí)符/名字對(duì)同一包中的所有其他源碼文件都可見(jiàn),不需要加任何前綴即可引用,因?yàn)榇a包只是一種組織管理源碼文件的形式,同一個(gè)包下的多個(gè)源碼文件本就屬于一個(gè)整體,事實(shí)上我們完全可以將一個(gè)包當(dāng)成一個(gè)”大文件“去看,毫無(wú)疑問(wèn)這個(gè)”大文件“中聲明的標(biāo)識(shí)符/名字不能重名

// 2、包名很關(guān)鍵
名為main的包可簡(jiǎn)稱為”main包“,是程序的入口,go程序運(yùn)行時(shí)會(huì)查找main包下的main函數(shù),main函數(shù)既沒(méi)有參數(shù)聲明也沒(méi)有結(jié)果聲明,見(jiàn)下圖

名不為main的包可稱之為”其他包“,是程序的功能/屬性集合,此類包用來(lái)被其他包導(dǎo)入使用,為何此時(shí)包名仍然很關(guān)鍵呢?因?yàn)槲覀儗?dǎo)入時(shí)用的是導(dǎo)入路徑(指的是包所在的路徑,該路徑不是絕對(duì)路徑,稍后介紹),但是使用的則可能會(huì)使用"包名.xxx"

go語(yǔ)言以包組織代碼的原因是什么

綜上:包是程序功能/屬性“分散管理” 、“歸一使用”的一種邏輯意義上的組織形式

關(guān)于“go語(yǔ)言以包組織代碼的原因是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“go語(yǔ)言以包組織代碼的原因是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


名稱欄目:go語(yǔ)言以包組織代碼的原因是什么
本文鏈接:http://weahome.cn/article/pgsjgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部