亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go包管理的具體實(shí)現(xiàn)

 更新時(shí)間:2025年06月12日 11:00:04   作者:終身學(xué)習(xí)基地  
本文主要介紹了go包管理的具體實(shí)現(xiàn),包括包定義、自定義包路徑、init函數(shù)作用、導(dǎo)入方式及Go Modules配置,感興趣的可以了解一下

一、包管理

1 包

即模塊,組織go源代碼,提供了更好的可重用性和可用性。

每個(gè)文件中第一行是package packagename,代表指定了該文件屬于那個(gè)包。

go語言中,同一層級(jí)的文件屬于一個(gè)包,比如第一層級(jí)package main,如果新定義一個(gè)demo文件夾,在其中的文件中書寫package main(雖然都叫main包,但是不是同一個(gè)包),在第一層級(jí)的package main中引用demo文件下的main包,是屬于main.函數(shù)名的形式?!驹硎沁@樣,但是這樣寫會(huì)報(bào)錯(cuò)??】

2 自定義包

  • go語言的代碼必須放在gopath的src路徑下;
  • 包導(dǎo)入是從gopath的src路徑下開始檢索(開始找)【并非是在該項(xiàng)目下查找】;
  • 除了main包以外,建議包名就叫文件夾名,一個(gè)文件夾下的包名必須一致【也可以包名叫mypackage,其中所有文件中第一行是package test】;
  • 同一個(gè)包下,變量,函數(shù)只能定義一次【在包中的變量聲明,全局變量不能使用a:=10,這種類型,必須使用全定義或者半定義】;
  • 同一個(gè)包下的變量和函數(shù)可以直接相互使用【可以把包想象為是一整個(gè)大的文件】;
  • 包內(nèi)的函數(shù)或變量,想讓外部包使用,必須首字母大寫;
package myPackage  // 包內(nèi)的變量、函數(shù)想讓外部使用,必須首字母大寫
var Name = "yangyi"
var Age = 18

// 導(dǎo)入使用
package main

import (
    "day01/myPackage"  // 自動(dòng)進(jìn)行包的導(dǎo)入
    "fmt"
) // 內(nèi)置包

func main() {
    fmt.Println(myPackage.Name)  
}

import test "day01/myPackage"  == python中的 import ... as ...

Java中可以使用public private等關(guān)鍵字來對(duì)外界使用進(jìn)行限制?!究梢允褂?code>public static將類封裝成工具類】

以后下的第三方包都是放在gopath的src路徑下【編譯的時(shí)候,也就是將第三方包的函數(shù)也編譯到可執(zhí)行文件中】

3 init函數(shù)(特殊函數(shù))

可以在包內(nèi)的文件中書寫init函數(shù)。

// mypackage包中
package mypackage

import "fmt"

// 特殊函數(shù),初始化函數(shù),在導(dǎo)包的時(shí)候就會(huì)執(zhí)行,并且可以定義多個(gè)
// 用處: 初始化工作【每次導(dǎo)入包,執(zhí)行這個(gè)函數(shù)】
func init() {
    fmt.Println("我是init函數(shù)...")
}

func init1(){
    fmt.Println("我是init函數(shù)...")
}

main 包也是會(huì)執(zhí)行init函數(shù),進(jìn)行初始化。

4 包導(dǎo)入的幾種方式

  • import "day02/mypackage"
  • import 名字 "day02/mypackage" 包重命名
    • 使用方式: 名字.變量/函數(shù)
  • import _ "day02/mypackage"包只導(dǎo)入,不使用

5 go mod模式創(chuàng)建項(xiàng)目

go語言有g(shù)o mod;python中有虛擬環(huán)境;Java中有maven;

go語言沒有一個(gè)統(tǒng)一包管理的地址,大家都放到github上?!居捎谥跋螺d的包,都會(huì)放到src路徑的github.com下,所以,無法實(shí)現(xiàn)一個(gè)多版本的控制】【哈哈】

1.11版本推出go modules機(jī)制,簡稱mod。

set GO111MODULE=on  // windows 將mod開啟
set GO111MODULE=off  // 將mod關(guān)閉
export GO111MODULE=on  // linux

創(chuàng)建go mod的兩種方式:

// 第一種:
1 新建一個(gè)項(xiàng)目文件夾,如day01項(xiàng)目
2 進(jìn)入文件夾,打開cmd,輸入 go mod init day01,會(huì)生成 go.mod文件(該項(xiàng)目名 該項(xiàng)目依賴的go的版本,第三方包版本)

// 下載beego
go get github.com/astaxie/beego

如果沒有g(shù)o mod,之前會(huì)在src路徑的github.com路徑下安裝;有g(shù)o mod之后,會(huì)在pkg的路徑下進(jìn)行存放?!局筮M(jìn)行第三方包的尋找,不是基于src路徑尋找,而是基于go mod配置的路徑進(jìn)行尋找】

PS:自己寫的包放在項(xiàng)目中,go sdk就是go的安裝路徑,如果有g(shù)o mod,第三方包就是pkg路徑下的。

我們這里需要配置代理,如果不進(jìn)行配置的話?!舅俣嚷綗o法想象】

package main

import (
    "github.com/astaxie/beego"
) // 內(nèi)置包

func main() {
    beego.Run()  // 啟動(dòng)beego即可
}

可以把go mod文件直接拷貝給別人,別人直接使用go mod download就可以安裝第三方包。

到此這篇關(guān)于go包管理的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go包管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 快速掌握Go語言正/反向代理

    快速掌握Go語言正/反向代理

    這篇文章主要介紹了快速掌握Go語言正/反向代理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Go語言單線程運(yùn)行也會(huì)有的并發(fā)問題解析

    Go語言單線程運(yùn)行也會(huì)有的并發(fā)問題解析

    這篇文章主要為大家介紹了Go語言單線程運(yùn)行的并發(fā)問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言接口的嵌套的具體使用

    Go語言接口的嵌套的具體使用

    在Go語言中,不僅結(jié)構(gòu)體與結(jié)構(gòu)體之間可以嵌套,接口與接口間也可以通過嵌套創(chuàng)造出新的接口,本文主要介紹了Go語言接口的嵌套的具體使用,感興趣的可以了解一下
    2023-04-04
  • goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例

    goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    最近項(xiàng)目中需要用到鑒權(quán)機(jī)制,golang中jwt可以用,這篇文章主要給大家介紹了關(guān)于Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Go語言context上下文管理的使用

    Go語言context上下文管理的使用

    本文主要介紹了Go語言context上下文管理的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Golang channle管道的基本使用及快速入門

    Golang channle管道的基本使用及快速入門

    管道是Go語言中實(shí)現(xiàn)并發(fā)的一種方式,它可以在多個(gè)goroutine之間進(jìn)行通信和數(shù)據(jù)交換,本文主要介紹了Golang channle管道的基本使用及快速入門,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 源碼解析gtoken替換jwt實(shí)現(xiàn)sso登錄

    源碼解析gtoken替換jwt實(shí)現(xiàn)sso登錄

    這篇文章主要為大家介紹了源碼解析gtoken替換jwt實(shí)現(xiàn)sso登錄的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang協(xié)程池設(shè)計(jì)詳解

    golang協(xié)程池設(shè)計(jì)詳解

    這篇文章主要介紹了golang協(xié)程池設(shè)計(jì)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Golang應(yīng)用程序性能優(yōu)化技巧分享

    Golang應(yīng)用程序性能優(yōu)化技巧分享

    隨著科技的進(jìn)步,人人都想要快速的應(yīng)用,這就需要優(yōu)化您的應(yīng)用程序性能。本文為大家整理了一些Golang應(yīng)用程序性能優(yōu)化的技巧,希望對(duì)大家有所幫助
    2023-04-04

最新評(píng)論