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

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

Golang【basic-創(chuàng)新互聯(lián)

閱讀目錄
  • 一、Golang 中包的介紹和定義
  • 二、Golang 包管理工具 go mod
    • 1、go mod init 初始化項(xiàng)目
    • 2、go mod 其他命令
  • 三、Golang 中自定義包
    • 1、定義一個(gè)包
      • 1.1、定義一個(gè)包名為 calc 的包
      • 1.2、main.go 中引入這個(gè)包
    • 2、導(dǎo)入一個(gè)包
  • 四、Golang 中 init() 初始化函數(shù)
  • 五、Golang 中使用第三方包
    • 1、找到我們需要下載安裝的第三方包的地址
    • 2、安裝這個(gè)包
    • 3、看文檔使用這個(gè)包
  • 示例下載 gjson 包

目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、通渭網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。一、Golang 中包的介紹和定義

包(package)是多個(gè)Go 源碼的集合,是一種高級(jí)的代碼復(fù)用方案,Go 語(yǔ)言為我們提供了很多內(nèi)置包,如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。

Golang 中的包可以分為三種:
1、系統(tǒng)內(nèi)置包。
2、自定義包。
3、第三方包。

系統(tǒng)內(nèi)置包: Golang 語(yǔ)言給我們提供的內(nèi)置包,引入后可以直接使用,如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。

自定義包:開發(fā)者自己寫的包。

第三方包:屬于自定義包的一種,需要下載安裝到本地后才可以使用,如前面給大家介紹的"github.com/shopspring/decimal"包解決float精度丟失問題。

二、Golang 包管理工具 go mod

在Golang1.11 版本之前如果我們要自定義包的話必須把項(xiàng)目放在GOPATH 目錄。

Go1.11 版本之后無(wú)需手動(dòng)配置環(huán)境變量,使用go mod 管理項(xiàng)目,也不需要非得把項(xiàng)目放到GOPATH指定目錄下,你可以在你磁盤的任何位置新建一個(gè)項(xiàng)目, Go1.13 以后可以徹底不要GOPATH了。

1、go mod init 初始化項(xiàng)目

實(shí)際項(xiàng)目開發(fā)中我們首先要在我們項(xiàng)目目錄中用 go mod 命令生成一個(gè)go.mod 文件管理我們項(xiàng)目的依賴。

比如我們的golang 項(xiàng)目文件要放在了itying 這個(gè)文件夾,這個(gè)時(shí)候我們需要在itying 文件夾里面使用go mod 命令生成一個(gè)go.mod 文件。

在這里插入圖片描述
在這里插入圖片描述

2、go mod 其他命令

在這里插入圖片描述

  • download download modules to local cache (下載依賴的 module 到本地cache))
  • edit edit go.mod from tools or scripts (編輯 go.mod 文件)
  • graph print module requirement graph (打印模塊依賴圖))
  • init initialize new module in current directory (再當(dāng)前文件夾下初始化一個(gè)新的 module, 創(chuàng)建go.mod 文件))
  • tidy add missing and remove unused modules (增加丟失的module,去掉未用的 module)
  • vendor make vendored copy of dependencies (將依賴復(fù)制到vendor 下)
  • verify verify dependencies have expected content (校驗(yàn)依賴檢查下載的第三方庫(kù)有沒有本地修改,如果有修改,則會(huì)返回非0,否則驗(yàn)證成功。)
  • why explain why packages or modules are needed (解釋為什么需要依賴)
三、Golang 中自定義包

包(package)是多個(gè)Go 源碼的集合,一個(gè)包可以簡(jiǎn)單理解為一個(gè)存放多個(gè).go 文件的文件夾。

該文件夾下面的所有g(shù)o 文件都要在代碼的第一行添加如下代碼,聲明該文件歸屬的包。

package 包名

注意事項(xiàng):

  • 一個(gè)文件夾下面直接包含的文件只能歸屬一個(gè)package,同樣一個(gè)package 的文件不能在多個(gè)文件夾下。
  • 包名可以不和文件夾的名字一樣,包名不能包含-符號(hào)。
  • 包名為 main 的包為應(yīng)用程序的入口包,這種包編譯后會(huì)得到一個(gè)可執(zhí)行文件,而編譯不包含main 包的源代碼則不會(huì)得到可執(zhí)行文件。
1、定義一個(gè)包

如果想在一個(gè)包中引用另外一個(gè)包里的標(biāo)識(shí)符(如變量、常量、類型、函數(shù)等)時(shí),該標(biāo)識(shí)符必須是對(duì)外可見的(public)。

在Go 語(yǔ)言中只需要將標(biāo)識(shí)符的首字母大寫就可以讓標(biāo)識(shí)符對(duì)外可見了。

1.1、定義一個(gè)包名為 calc 的包

代碼如下:E:\golang\src\pkg\calc\calc.go

創(chuàng)建文件夾:pkg\calc,創(chuàng)建文件:calc.go。

package calc

//首字母大小表示公有,首字母小寫表示私有
var a = 100  //私有變量
var Age = 20 //公有變量
func Add(x, y int) int {return x + y
}
func Sum(x, y int) int {return x - y
}
1.2、main.go 中引入這個(gè)包

訪問一個(gè)包里面的公有屬性方法的時(shí)候需要通過包名稱.去訪問。

package main

import (
	"fmt"
	"one/main/src/pkg/calc"
)

func main() {c := calc.Add(10, 20)
	fmt.Println(c)
}
running...
30

在這里插入圖片描述

2、導(dǎo)入一個(gè)包

單行導(dǎo)入

單行導(dǎo)入的格式如下:

import "包1"
import "包2"

多行導(dǎo)入

多行導(dǎo)入的格式如下:

import (
	"包1"
	"包2"
)

匿名導(dǎo)入包

如果只希望導(dǎo)入包,而不使用包內(nèi)部的數(shù)據(jù)時(shí),可以使用匿名導(dǎo)入包。

具體的格式如下:

import _ "包的路徑"

匿名導(dǎo)入的包與其他方式導(dǎo)入的包一樣都會(huì)被編譯到可執(zhí)行文件中。

自定義包名

在導(dǎo)入包名的時(shí)候,我們還可以為導(dǎo)入的包設(shè)置別名。

通常用于導(dǎo)入的包名太長(zhǎng)或者導(dǎo)入的包名沖突的情況。

具體語(yǔ)法格式如下:

import 別名 "包的路徑"

單行引入定義別名:

import c "itying/calc"

多行引入定義別名:

import (
	"fmt"
	c "itying/calc"
)

在這里插入圖片描述

四、Golang 中 init() 初始化函數(shù)

init() 函數(shù)介紹

在Go 語(yǔ)言程序執(zhí)行時(shí)導(dǎo)入包語(yǔ)句會(huì)自動(dòng)觸發(fā)包內(nèi)部 init()函數(shù)的調(diào)用。

需要注意的是: init() 函數(shù)沒有參數(shù)也沒有返回值。

init()函數(shù)在程序運(yùn)行時(shí)自動(dòng)被調(diào)用執(zhí)行,不能在代碼中主動(dòng)調(diào)用它。

包初始化執(zhí)行的順序如下圖所示:

在這里插入圖片描述
init()函數(shù)執(zhí)行順序

Go 語(yǔ)言包會(huì)從main 包開始檢查其導(dǎo)入的所有包,每個(gè)包中又可能導(dǎo)入了其他的包。

Go 編譯器由此構(gòu)建出一個(gè)樹狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。

在運(yùn)行時(shí),被最后導(dǎo)入的包會(huì)最先初始化并調(diào)用其init()函數(shù), 如下圖示:

在這里插入圖片描述

五、Golang 中使用第三方包

我們可以在 https://pkg.go.dev/ 查找看常見的 golang 第三方包。

1、找到我們需要下載安裝的第三方包的地址

比如前面給大家演示的解決 float 精度損失的包decimal。

https://github.com/shopspring/decimal

2、安裝這個(gè)包

第一種方法:go get 包名稱(全局)

go get github.com/shopspring/decimal
PS E:\golang\src>go get github.com/shopspring/decimal
go: downloading github.com/shopspring/decimal v1.3.1
go: added github.com/shopspring/decimal v1.3.1
PS E:\golang\src>

查看包安裝路徑:

go env

以下即是go的包安裝路徑
set GOPATH=C:\Users\Administrator\go

在這里插入圖片描述

第二種方法:go mod download (全局)

package main

import (
	"fmt"

	"github.com/shopspring/decimal"
)

func main() {quantity := decimal.NewFromInt(3)
	fmt.Println(quantity)
}

運(yùn)行命令

go mod download

go run .\main.go 或者 go install

賴包會(huì)自動(dòng)下載到 $GOPATH/pkg/mod,多個(gè)項(xiàng)目可以共享緩存的mod,注意使用 go mod download 的時(shí)候首先需要在你的項(xiàng)目里面引入第三方包。

第三種方法:go mod vendor 將依賴復(fù)制到當(dāng)前項(xiàng)目的 vendor 下(本項(xiàng)目)

go mod vendor

在這里插入圖片描述

將依賴復(fù)制到當(dāng)前項(xiàng)目的 vendor 下。

注意:使用 go mod vendor 的時(shí)候首先需要在你的項(xiàng)目里面引入第三方包。

3、看文檔使用這個(gè)包

包安裝完畢后我們就可以看文檔使用這個(gè)包了…

示例下載 gjson 包

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

PS E:\golang\src>go get -u github.com/tidwall/gjson
go: downloading github.com/tidwall/gjson v1.14.4
go: downloading github.com/tidwall/pretty v1.2.0
go: downloading github.com/tidwall/match v1.1.1
go: downloading github.com/tidwall/pretty v1.2.1
go: added github.com/tidwall/gjson v1.14.4
go: added github.com/tidwall/match v1.1.1
go: added github.com/tidwall/pretty v1.2.1
PS E:\golang\src>

在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站欄目:Golang【basic-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://weahome.cn/article/csojii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部