Rumah >pembangunan bahagian belakang >Golang >Apakah modul go? Bagaimana cara menggunakannya? (dengan contoh penggunaan)

Apakah modul go? Bagaimana cara menggunakannya? (dengan contoh penggunaan)

藏色散人
藏色散人ke hadapan
2022-01-12 16:02:395475semak imbas

Artikel ini diperkenalkan oleh ruangan tutorial golang untuk memperkenalkan cara menggunakan modul go Saya harap ia dapat membantu rakan-rakan yang memerlukan.

penggunaan modul go

modul go dilancarkan selepas versi go 1.14

1 Pengenalan kepada penggunaan modul go

go module ialah Go1 Alat pengurusan versi dilancarkan secara rasmi selepas versi .11, dan bermula dari versi Go1.13, go module akan menjadi alat pengurusan pergantungan lalai bagi bahasa Go.

1.1 GO111MODULE

Untuk mendayakan sokongan go module, anda mesti menetapkan pembolehubah persekitaran GO111MODULE dahulu, yang melaluinya anda boleh menghidupkan atau mematikan sokongan modul Ia mempunyai tiga nilai pilihan: off, on, auto, nilai lalai ialah auto.

  • GO111MODULE=off melumpuhkan sokongan modul dan akan mencari pakej dalam folder GOPATH dan vendor semasa menyusun.

  • GO111MODULE=onDayakan sokongan modul, folder GOPATH dan vendor akan diabaikan semasa penyusunan, dan hanya kebergantungan akan dimuat turun berdasarkan go.mod dan kebergantungan akan dimuat turun ke direktori %GOPATH%/pkg/mod/ .

  • GO111MODULE=auto, apabila projek berada di luar $GOPATH/src dan terdapat fail go.mod dalam direktori akar projek, sokongan modul didayakan.

Ringkasnya, selepas menetapkan GO111MODULE=on, anda boleh menggunakan go module tidak perlu membuat projek dalam GOPATH pada masa hadapan, dan anda juga boleh mengurus kebergantungan projek maklumat pakej pihak ketiga.

Selepas menggunakan modul go untuk mengurus kebergantungan, dua fail go.mod dan go.sum akan dijana dalam direktori akar projek.

1.2 Akses Republikan, jadi amat disyorkan agar anda menyediakan GOPROXY Di sini saya syorkan menggunakan goproxy.cn.

Arahan mod 1.3 go
export GOPROXY=https://goproxy.cn

Arahan GOPROXY yang biasa digunakan adalah seperti berikut: https://proxy.golang.org

go env -w GOPROXY=https://goproxy.cn,direct
1.4 go.mod

go. fail mod Semua maklumat pergantungan projek direkodkan, dan strukturnya kira-kira seperti berikut:

go mod

Antaranya,
go mod download    下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit        编辑go.mod文件
go mod graph       打印模块依赖图
go mod init        初始化当前文件夹, 创建go.mod文件
go mod tidy        增加缺少的module,删除无用的module
go mod vendor      将依赖复制到vendor下
go mod verify      校验依赖
go mod why         解释为什么需要依赖

digunakan untuk mentakrifkan nama pakej

module github.com/Q1mi/studygo/blogger

go 1.12

require (
    github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586
    github.com/gin-gonic/gin v1.4.0
    github.com/go-sql-driver/mysql v1.4.1
    github.com/jmoiron/sqlx v1.2.0
    github.com/satori/go.uuid v1.2.0
    google.golang.org/appengine v1.6.1 // indirect
)

Digunakan untuk mentakrif pakej dan versi bergantung

  • mewakili rujukan tidak langsung module
  • 1.4.1 Versi bergantung require
  • go mod menyokong nombor versi semantik, seperti
  • , anda juga boleh mengikuti cawangan atau teg git, seperti indirect, dan sudah tentu anda juga boleh menyerahkan cincangan dengan git, seperti
  • . Mengenai versi pergantungan, format berikut disokong:

1.4.2 ganti

go get foo@v1.2.3Setiap pakej yang mengakses golang.org/x di China perlu memintas tembok api Anda boleh pergi gantikan dalam mod untuk menggantikannya dengan perpustakaan yang sepadan pada github. go get foo@mastergo get foo@e3702bed2

1.5 go get
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
gopkg.in/vmihailenco/msgpack.v2 v2.9.1
gopkg.in/yaml.v2 <=v2.2.1
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e
latest

Laksanakan perintah

dalam projek untuk memuat turun pakej pergantungan dan anda juga boleh menentukan versi yang dimuat turun.

replace (
    golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
    golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
    golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
)
Run

akan menaik taraf kepada versi minor atau semakan terkini (x.y.z, z ialah nombor semakan, y ialah nombor versi minor)

Jalankango getIa akan ditingkatkan kepada semakan terkini

    Jalankan
  1. Ia akan ditingkatkan kepada versi nombor versi yang ditentukango get -u
  2. Jika anda memuat turun semua kebergantungan, anda boleh menggunakan perintah go get -u=patch.
  3. 1.6 Menyusun tanggungan go get package@version
  4. Selepas kami memadamkan kod bergantung dalam kod, perpustakaan bergantung yang berkaitan tidak akan dialih keluar secara automatik daripada fail
. Dalam kes ini kita boleh menggunakan perintah

untuk mengemas kini kebergantungan dalam go mod download.

1.7 go mod edit

Pemformatango.modgo mod tidyOleh kerana kita boleh mengubah suai fail go.mod secara manual, kadangkala kita perlu memformat fail. Go menyediakan arahan berikut: go.mod

Tambah kebergantungan

Alih keluar kebergantungan

Jika anda hanya mahu mengubah suai kandungan dalam fail
go mod edit -fmt
, maka Anda boleh menjalankan

Contohnya, untuk mengalih keluar pakej

dalam
go mod edit -require=golang.org/x/text
, anda boleh menggunakan arahan berikut:

Lebih banyak penggunaan go.mod boleh dilihat melalui go mod edit -droprequire=package path. go.modgolang.org/x/text1.8 Menggunakan modul go dalam projek

go mod edit -droprequire=golang.org/x/text
1.8.1 Projek sedia ada

go mod editJika anda perlu mendayakan go help mod edit untuk projek sedia ada, anda boleh mengikuti langkah di bawah:

Laksanakan

dalam direktori projek untuk menjana fail

.

go moduleLaksanakan

untuk mencari dan merekod kebergantungan projek semasa dan menjana
    untuk merekod versi dan nilai cincang setiap pustaka bergantung.
  1. go mod initgo.mod1.8.2 Projek Baharu
  2. Untuk projek yang baru dibuat, kita boleh mengikuti langkah berikut di bawah folder projek: go get
    1. 执行go mod init 项目名命令,在当前项目文件夹下创建一个go.mod文件。
    2. 手动编辑go.mod中的require依赖项或执行go get自动发现、维护依赖。

    二、包和调用文件在同一项目下

    例如:

    moduledemo
    ├── go.mod
    ├── main.go
    └── mypackage
        └── mypackage.go  // package mp 定义包名为 mp

    步骤:

    1.在项目下创建一个 go.mod 文件,文件名只能为这个。

    2.在 go.mod 文件中添加以下代码

    module moduledemo  // 设定 moduledemo 为包根目录名,可以随意改变该名字,只需要导入时一致就好
    go 1.14  // 表明版本

    3.导入想要的包文件

    import "moduledemo/mypackage"  // 这里是导入包目录下的包文件名

    4.使用包文件

    mp.MyPackage()  // 使用包中的 MyPackage() 函数

    三、包和被调用文件不在同一个项目下

    例如:

    ├── moduledemo
    │   ├── go.mod
    │   └── main.go
    └── mypackage
        ├── go.mod
        └── mypackage.go  // package mp 定义包名为 mp

    步骤

    1.在 mypackage 下面创建 go.mod 文件,并添加以下代码

    module mypackage
    
    go 1.14

    2.在 moduledemo 下面创建 go.mod 文件,并添加以下代码

    module moduledemo
    
    go 1.14
    
    
    require mypackage v0.0.0  // 这个会在你执行 go build 之后自动在该文件添加
    replace mypackage => ../mypackage  // 指定需要的包目录去后面这个路径中寻找

    3.导入和使用

    import "mypackage"  // 因为该包目录本身就是包文件所以无需添加下一级路径
    
    mp.MyPackage()  // 使用包中的 MyPackage() 函数

Atas ialah kandungan terperinci Apakah modul go? Bagaimana cara menggunakannya? (dengan contoh penggunaan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam