Rumah > pembangunan bahagian belakang > Golang > Mengapa bahasa Go menyusun kod dalam pakej?

Mengapa bahasa Go menyusun kod dalam pakej?

青灯夜游
Lepaskan: 2023-01-05 10:16:30
asal
3909 orang telah melayarinya

Sebab: Adalah tidak munasabah untuk meletakkan semua kod program ke dalam satu fail kod sumber perlu diuruskan dalam fail berasingan Namun, dengan peningkatan fail program, mesti ada cara untuk menyusun dan menguruskan fail / borang, jadi Go memperkenalkan konsep "pakej". Pakej ialah bentuk organisasi yang logik untuk "pengurusan terdesentralisasi" dan "penggunaan bersatu" fungsi/atribut program.

Mengapa bahasa Go menyusun kod dalam pakej?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Pengenalan pakej

Fail program yang kami bangunkan menggunakan bahasa go dipanggil fail kod sumber (fail kod sumber mesti berakhir dengan .go). Jelas sekali adalah tidak munasabah untuk meletakkan semua kod program ke dalam satu fail kod sumber Kod yang berkaitan perlu diuruskan dalam fail berasingan Namun, dengan peningkatan fail program, mesti ada cara/bentuk untuk mengatur dan mengurus fail, jadi Go memperkenalkan Memahami konsep "pakej".

Pakej ialah konsep maya yang disediakan oleh bahasa Go Berbilang fail kod sumber dengan pengisytiharan pakej yang konsisten secara logik disusun bersama dan tergolong dalam pakej yang sama.

Pakej bahasa Go menggunakan bentuk organisasi pepohon direktori Secara amnya, nama pakej ialah nama direktori di mana fail sumbernya berada Walaupun bahasa Go tidak mewajibkan nama pakej mesti mempunyai nama yang sama dengan nama direktori di mana ia terletak, tetapi masih disyorkan bahawa nama pakej mempunyai nama yang sama dengan direktori di mana ia berada, supaya strukturnya lebih jelas.

Pakej boleh ditakrifkan dalam direktori yang sangat mendalam Takrif nama pakej tidak termasuk laluan direktori, tetapi laluan penuh biasanya digunakan semasa merujuk pakej. Sebagai contoh, tentukan pakej c di bawah GOPATH/src/a/b/. Dalam kod sumber pakej c, anda hanya perlu mengisytiharkannya sebagai pakej c dan bukannya pakej a/b/c Walau bagaimanapun, apabila mengimport pakej c, anda perlu membawa laluan, seperti import "a/b/c". .

Idiom penggunaan pakej:

  • Nama pakej biasanya menggunakan huruf kecil, menggunakan nama yang pendek dan bermakna.

  • Nama pakej secara amnya mempunyai nama yang sama dengan direktori di mana ia berada, atau ia boleh berbeza Nama pakej tidak boleh mengandungi simbol khas seperti -.

  • Pakej biasanya menggunakan nama domain sebagai nama direktori, yang memastikan keunikan nama pakej Contohnya, pakej projek GitHub biasanya diletakkan dalam GOPATH/src/github Direktori .com/userName/projectName.

  • Pakej yang dinamakan utama ialah pakej kemasukan aplikasi apabila menyusun fail kod sumber yang tidak mengandungi pakej utama, anda tidak akan mendapat fail boleh laku.

  • Semua fail kod sumber dalam folder hanya boleh dimiliki oleh pakej yang sama dan fail kod sumber kepunyaan pakej yang sama tidak boleh diletakkan dalam berbilang folder.

(1) Pengisytiharan pakej, laluan import pakej, isu yang perlu diberi perhatian

//一:包的声明
// 1、每个源码文件都必须在文件头处声明自己归属的包。
package 包名 // 包名一般总是用小写字母

// 2、包名任意,包名一致的属于同一个包

// 3、包是编译和归档Go程序的最基本单位,一个包中的多个源码文件是一个不可分割的整体

//二:包的导入路径
强调强调强调!!!!!!
包是一个把多个源码文件归一到一起管理的虚拟单位,一定要记住,它只是一个虚拟的概念而已,而实实在在地讲,多个源码文件是要放置到一个实实在在的文件夹下的,这个实实在在的文件夹所处的路径是包的导入路径。包的导入路径很重要,他是包的"家庭住址",是用来找到包的(用在import语句中,稍后介绍),但它绝不等同于包的概念

//三:注意的问题
1、一个文件夹下只能放置一个包,也就是所一个文件夹下放置的多个源码文件的包声明必须一致,go以此来确保一个路径就唯一定位到唯一的一个包。
2、包虽然与文件夹路径是截然不同的意思,但是为了方便记忆,包通常应该声明为文件夹的名字
例如文件夹路径/a/b/c/mypkg,包名应声明为package mypkg,mypkg就为包名
Salin selepas log masuk

Mengapa bahasa Go menyusun kod dalam pakej?

(2) Pembezaan dan penempatan pakej

Pakej ialah konsep maya dan logik, tetapi berbilang fail kod sumber yang dianjurkan oleh pakej sememangnya nyata Ya, ia mesti diletakkan dalam folder tertentu

Sila ambil perhatian: Demi kesederhanaan dalam penulisan berikutnya, penulis secara langsung merujuk kepada lokasi penyimpanan beberapa fail kod sumber yang dianjurkan oleh pakej sebagai lokasi penyimpanan bagi pakej. Pembaca dijemput untuk Pastikan tahu.

Pakej utama mengandungi titik masuk program dan digunakan terutamanya untuk menjalankannya, dalam apa jua keadaan, pakej utama boleh diletakkan dalam mana-mana folder.

Pengarang memanggil pakej selain daripada pakej utama pakej lain, khususnya merujuk kepada pakej terbina dalam, pakej tersuai dan pakej pihak ketiga yang dimuat turun. Berbeza dengan pakej utama, pakej lain terutamanya digunakan untuk diimport dan digunakan Lokasi penempatan adalah seperti berikut

// 内置包
内置包固定被放置在`$GOROOT/src/`下,与任何模式无关

// 自定义包
在未启用modules模式的情况下,自定义包需要放置在GOPATH指定的任意目录下的src中

// 下载的第三方包
在未启用modules模式的情况下,使用go工具链命令下载的第三方包总是默认被存放到GOPATH的第一个目录的src下 


// 强调一下
在早期的Go环境中,自定义的包与下载的第三方包都是放到了$GOPATH/src下,因为早期Go采用的是和GOPATH模式,而且即便是在GO1.14.2版本中,在我们还未学习如何使用任何新模式前,默认使用的仍是GOPATH模式
Salin selepas log masuk

ps:

1 nama haiwan peliharaan untuk pakej standard

2. Sebarang pakej yang disimpan dalam ruang kerja GOPATH secara rasmi dipanggil pakej ruang kerja

(3) Penggunaan pakej

// 1、一个源码文件中声明的函数、类型、变量和常量等标识符/名字对同一包中的所有其他源码文件都可见,不需要加任何前缀即可引用,因为代码包只是一种组织管理源码文件的形式,同一个包下的多个源码文件本就属于一个整体,事实上我们完全可以将一个包当成一个”大文件“去看,毫无疑问这个”大文件“中声明的标识符/名字不能重名

// 2、包名很关键
名为main的包可简称为”main包“,是程序的入口,go程序运行时会查找main包下的main函数,main函数既没有参数声明也没有结果声明,见下图

名不为main的包可称之为”其他包“,是程序的功能/属性集合,此类包用来被其他包导入使用,为何此时包名仍然很关键呢?因为我们导入时用的是导入路径(指的是包所在的路径,该路径不是绝对路径,稍后介绍),但是使用的则可能会使用"包名.xxx"
Salin selepas log masuk

Mengapa bahasa Go menyusun kod dalam pakej?

Ringkasnya: Pakej ialah bentuk organisasi yang logik untuk "pengurusan terdesentralisasi" dan "penggunaan bersatu" fungsi/atribut program

[Cadangan berkaitan: Go Video tutorial, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Mengapa bahasa Go menyusun kod dalam pakej?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan