最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go?mod詳細(xì)使用教程

 更新時(shí)間:2022年07月28日 15:17:14   作者:若與  
go mod是go的一個(gè)模塊管理工具,用來(lái)代替?zhèn)鹘y(tǒng)的GOPATH方案,下面這篇文章主要給大家介紹了關(guān)于go?mod詳細(xì)使用的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近由于換工作,開(kāi)始交接工作。整理以前的工作內(nèi)容,由于組內(nèi)就我一個(gè)在做go和大數(shù)據(jù)。 所以開(kāi)發(fā)沒(méi)有規(guī)劃,當(dāng)時(shí)是怎么快怎么來(lái)。go也是使用最傳統(tǒng)的go path的方式管理的。都是手動(dòng)管理依賴的?,F(xiàn)在交接給他人,需要多人開(kāi)發(fā),發(fā)現(xiàn)很多問(wèn)題。比如版本問(wèn)題,各種依賴的問(wèn)題等等。

由于工作原因,幾乎所有主流語(yǔ)言都寫過(guò)。所以,對(duì)應(yīng)語(yǔ)言包管理工具也都了解和使用過(guò)。我前面有寫過(guò)maven的使用。
maven是使用過(guò)的功能最強(qiáng)大的包管理工具了,maven定位是項(xiàng)目管理工具。pip和npm都是及格的產(chǎn)品。

我個(gè)人覺(jué)得,一個(gè)包管理工具應(yīng)該有以下功能:

基本功能

  • 依賴管理
  • 依賴包版本控制
  • 對(duì)應(yīng)的包管理平臺(tái)
  • 可以私有化部署

加分:

  • 代碼包是否可以復(fù)用
  • 構(gòu)建,測(cè)試,打包
  • 發(fā)布上線

對(duì)比上面幾點(diǎn):

目前做的最好的也就 maven了,gradle沒(méi)有使用過(guò),不知道。

今天主角是go mod,先來(lái)談?wù)剾](méi)有使用go mod之前的問(wèn)題。

使用go path問(wèn)題

  • 代碼開(kāi)發(fā)必須在go path src目錄下,不然,就有問(wèn)題。
  • 依賴手動(dòng)管理
  • 依賴包沒(méi)有版本可言

從這個(gè)看, go path不算包管理工具

govendor

  • 解決了包依賴,一個(gè)配置文件就管理
  • 依賴包全都下載到項(xiàng)目vendor下,每個(gè)項(xiàng)目都把有一份。拉取項(xiàng)目時(shí),開(kāi)始懷疑人生。

go mod介紹

go modules 是 golang 1.11 新加的特性?,F(xiàn)在1.12 已經(jīng)發(fā)布了,是時(shí)候用起來(lái)了。Modules官方定義為:

模塊是相關(guān)Go包的集合。modules是源代碼交換和版本控制的單元。 go命令直接支持使用modules,包括記錄和解析對(duì)其他模塊的依賴性。modules替換舊的基于GOPATH的方法來(lái)指定在給定構(gòu)建中使用哪些源文件。

如何使用go mod

首先,必須升級(jí)go到1.11,目前版本是1.14

下面我以我自己升級(jí)演示:

### 卸載舊版本,刪除對(duì)應(yīng)文件
brew uninstall -f go

### 更新一下brew

brew update

### 安裝go
brew install go

上面升級(jí)完了,使用 go version看下版本

go version go1.14.1 darwin/amd64

下面設(shè)置go mod和go proxy

go env -w GOBIN=/Users/youdi/go/bin
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的

注意: go env -w會(huì)將配置寫到 GOENV="/Users/youdi/Library/Application Support/go/env"

下面看下我的配置

GO111MODULE="on"
GOARCH="amd64"
GOBIN="/Users/youdi/go/bin"
GOCACHE="/Users/youdi/Library/Caches/go-build"
GOENV="/Users/youdi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/youdi/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/8m/v_1j4dgs7rzgqq4p_4_8k_nr0000gn/T/go-build221113671=/tmp/go-build -gno-record-gcc-switches -fno-common"

我們看一下,我修改的內(nèi)容

cat /Users/youdi/Library/Application Support/go/env

GO111MODULE=on
GOBIN=/Users/youdi/go/bin
GOPROXY=https://goproxy.cn,direct
GOSUMDB=off

GO111MODULE

GO111MODULE 有三個(gè)值:off, on和auto(默認(rèn)值)。

  • GO111MODULE=off,go命令行將不會(huì)支持module功能,尋找依賴包的方式將會(huì)沿用舊版本那種通過(guò)vendor目錄或者GOPATH模式來(lái)查找。
  • GO111MODULE=on,go命令行會(huì)使用modules,而一點(diǎn)也不會(huì)去GOPATH目錄下查找。
  • GO111MODULE=auto,默認(rèn)值,go命令行將會(huì)根據(jù)當(dāng)前目錄來(lái)決定是否啟用module功能。這種情況下可以分為兩種情形:

當(dāng)前目錄在GOPATH/src之外且該目錄包含go.mod文件
當(dāng)前文件在包含go.mod文件的目錄下面。

當(dāng)modules功能啟用時(shí),依賴包的存放位置變更為$GOPATH/pkg,允許同一個(gè)package多個(gè)版本并存,且多個(gè)項(xiàng)目可以共享緩存的 module

我們看下目錄:

cd /Users/youdi/go/pkg

├── darwin_amd64
│   ├── github.com
│   ├── go.etcd.io
│   ├── golang
│   ├── golang.org
│   ├── gopkg.in
│   ├── quickstart
│   └── uc.a
├── mod
│   ├── cache
│   ├── github.com
│   ├── golang.org
│   ├── google.golang.org
│   └── gopkg.in
└── sumdb
    └── sum.golang.org

go mod命令

golang 提供了 go mod命令來(lái)管理包。

go help mod

Go mod provides access to operations on modules.

Note that support for modules is built into all the go commands,
not just 'go mod'. For example, day-to-day adding, removing, upgrading,
and downgrading of dependencies should be done using 'go get'.
See 'go help modules' for an overview of module functionality.

Usage:

    go mod <command> [arguments]

The commands are:

    download    download modules to local cache
    edit        edit go.mod from tools or scripts
    graph       print module requirement graph
    init        initialize new module in current directory
    tidy        add missing and remove unused modules
    vendor      make vendored copy of dependencies
    verify      verify dependencies have expected content
    why         explain why packages or modules are needed

Use "go help mod <command>" for more information about a command.

go mod 有以下命令:

命令說(shuō)明
downloaddownload modules to local cache(下載依賴包)
editedit go.mod from tools or scripts(編輯go.mod)
graphprint module requirement graph (打印模塊依賴圖)
verifyinitialize new module in current directory(在當(dāng)前目錄初始化mod)
tidyadd missing and remove unused modules(拉取缺少的模塊,移除不用的模塊)
vendormake vendored copy of dependencies(將依賴復(fù)制到vendor下)
verifyverify dependencies have expected content (驗(yàn)證依賴是否正確)
whyexplain why packages or modules are needed(解釋為什么需要依賴)

比較常用的是 init,tidy, edit

使用go mod管理一個(gè)新項(xiàng)目

1. 初始化項(xiàng)目

可以隨便找一個(gè)目錄創(chuàng)建項(xiàng)目,我使用習(xí)慣用IDEA進(jìn)行創(chuàng)建

mkdir Gone
cd Gone
go mod init Gone

查看一下 go.mod文件

module Gone

go 1.14

go.mod文件一旦創(chuàng)建后,它的內(nèi)容將會(huì)被go toolchain全面掌控。go toolchain會(huì)在各類命令執(zhí)行時(shí),比如go get、go build、go mod等修改和維護(hù)go.mod文件。

go.mod 提供了module, require、replace和exclude 四個(gè)命令

  • module 語(yǔ)句指定包的名字(路徑)
  • require 語(yǔ)句指定的依賴項(xiàng)模塊
  • replace 語(yǔ)句可以替換依賴項(xiàng)模塊
  • exclude 語(yǔ)句可以忽略依賴項(xiàng)模塊

2. 添加依賴

創(chuàng)建 main.go文件

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

執(zhí)行 go run main.go 運(yùn)行代碼會(huì)發(fā)現(xiàn) go mod 會(huì)自動(dòng)查找依賴自動(dòng)下載

再查看 go.mod

module Gone

go 1.14

require github.com/gin-gonic/gin v1.6.3

go module 安裝 package 的原則是先拉最新的 release tag,若無(wú)tag則拉最新的commit

go 會(huì)自動(dòng)生成一個(gè) go.sum 文件來(lái)記錄 dependency tree

再次執(zhí)行腳本 go run main.go發(fā)現(xiàn)跳過(guò)了檢查并安裝依賴的步驟。

可以使用命令 go list -m -u all 來(lái)檢查可以升級(jí)的package,使用go get -u need-upgrade-package 升級(jí)后會(huì)將新的依賴版本更新到go.mod * 也可以使用 go get -u 升級(jí)所有依賴

去mod包緩存下看看

/Users/youdi/go/pkg/mod/github.com/gin-gonic/gin@v1.6.3

go get升級(jí)

  • 運(yùn)行 go get -u 將會(huì)升級(jí)到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號(hào), y是次要版本號(hào))
  • 運(yùn)行 go get -u=patch 將會(huì)升級(jí)到最新的修訂版本
  • 運(yùn)行 go get package@version 將會(huì)升級(jí)到指定的版本號(hào)version
  • 運(yùn)行g(shù)o get如果有版本的更改,那么go.mod文件也會(huì)更改

使用replace替換無(wú)法直接獲取的package

由于某些已知的原因,并不是所有的package都能成功下載,比如:golang.org下的包。

modules 可以通過(guò)在 go.mod 文件中使用 replace 指令替換成github上對(duì)應(yīng)的庫(kù),比如:

replace (
    golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a => github.com/golang/crypto v0.0.0-20190313024323-a1f597ede03a
)

go mod發(fā)布和使用

參考Roberto Selbach寫的go mod入門文章,文末,我給出鏈接

Creating a Module

如果你設(shè)置好go mod了,那你就可以在任何目錄下隨便創(chuàng)建

$mkdir gomodone
$cd gomodone

在這個(gè)目錄下創(chuàng)建一個(gè)文件say.go

package gomodone

import "fmt" 

// say Hi to someone
func SayHi(name string) string {
   return fmt.Sprintf("Hi, %s", name)
}

初始化一個(gè) go.mod文件

$ go mod init github.com/jacksonyoudi/gomodone
go: creating new go.mod: module github.com/jacksonyoudi/gomodone

查看 go.mod內(nèi)容如下:

github.com/jacksonyoudi/gomodone
go 1.14

下面我們要將這個(gè)module發(fā)布到github上,然后在另外一個(gè)程序使用

$git init
$vim .gitiiignore
$git commit -am "init"
// github創(chuàng)建對(duì)應(yīng)的repo
$git remote add origin git@github.com:jacksonyoudi/gomodone.git
$git push -u origin master

執(zhí)行完,上面我們就相當(dāng)于發(fā)布完了。

如果有人需要使用,就可以使用

go get github.com/jacksonyoudi/gomodone

這個(gè)時(shí)候沒(méi)有加tag,所以,沒(méi)有版本的控制。默認(rèn)是v0.0.0后面接上時(shí)間和commitid。如下:

gomodone@v0.0.0-20200517004046-ee882713fd1e

官方不建議這樣做,沒(méi)有進(jìn)行版本控制管理。

module versioning

使用tag,進(jìn)行版本控制

making a release

git tag v1.0.0
git push --tags

操作完,我們的module就發(fā)布了一個(gè)v1.0.0的版本了。

推薦在這個(gè)狀態(tài)下,再切出一個(gè)分支,用于后續(xù)v1.0.0的修復(fù)推送,不要直接在master分支修復(fù)

$git checkout -b v1
$git push -u origin v1

use our module

上面已經(jīng)發(fā)布了一個(gè)v1.0.0的版本,我們可以在另一個(gè)項(xiàng)目中使用,創(chuàng)建一個(gè)go的項(xiàng)目

$mkdir Gone
$cd Gone
$vim main.go
package main

import (
    "fmt"
    "github.com/jacksonyoudi/gomodone"
)

func main() {
    fmt.Println(gomodone.SayHi("Roberto"))
}

代碼寫好了,我們生成 go mod文件

go mod init Gone

上面命令執(zhí)行完,會(huì)生成 go mod文件

看下mod文件:

module Gone

go 1.14

require (
    github.com/jacksonyoudi/gomodone v1.0.0
)
$go mod tidy
go: finding module for package github.com/jacksonyoudi/gomodone
go: found github.com/jacksonyoudi/gomodone in github.com/jacksonyoudi/gomodone v1.0.0

同時(shí)還生成了go.sum, 其中包含軟件包的哈希值,以確保我們具有正確的版本和文件。

github.com/jacksonyoudi/gomodone v1.0.1 h1:jFd+qZlAB0R3zqrC9kwO8IgPrAdayMUS0rSHMDc/uG8=
github.com/jacksonyoudi/gomodone v1.0.1/go.mod h1:XWi+BLbuiuC2YM8Qz4yQzTSPtHt3T3hrlNN2pNlyA94=
github.com/jacksonyoudi/gomodone/v2 v2.0.0 h1:GpzGeXCx/Xv2ueiZJ8hEhFwLu7xjxLBjkOYSmg8Ya/w=
github.com/jacksonyoudi/gomodone/v2 v2.0.0/go.mod h1:L8uFPSZNHoAhpaePWUfKmGinjufYdw9c2i70xtBorSw=

這個(gè)內(nèi)容是下面的,需要操作執(zhí)行的結(jié)果

go run main.go就可以運(yùn)行了

Making a bugfix release

假如fix一個(gè)bug,我們?cè)趘1版本上進(jìn)行修復(fù)

修改代碼如下:

// say Hi to someone
func SayHi(name string) string {
-       return fmt.Sprintf("Hi, %s", name)
+       return fmt.Sprintf("Hi, %s!", name)
}

修復(fù)好,我們開(kāi)始push

$ git commit -m "Emphasize our friendliness" say.go
$ git tag v1.0.1
$ git push --tags origin v1

Updating modules

剛才fix bug,所以要在我們使用項(xiàng)目中更新

這個(gè)需要我們手動(dòng)執(zhí)行更新module操作

我們通過(guò)使用我們的好朋友來(lái)做到這一點(diǎn)go get:

  • 運(yùn)行 go get -u 以使用最新的 minor 版本或修補(bǔ)程序版本(即它將從1.0.0更新到例如1.0.1,或者,如果可用,則更新為1.1.0)
  • 運(yùn)行 go get -u=patch 以使用最新的 修補(bǔ)程序 版本(即,將更新為1.0.1但不更新 為1.1.0)
  • 運(yùn)行g(shù)o get package@version 以更新到特定版本(例如github.com/jacksonyoudi/gomodone@v1.0.1

目前module最新的也是v1.0.1

// 更新最新
$go get -u
$go get -u=patch
//指定包,指定版本
$go get github.com/jacksonyoudi/gomodone@v1.0.1

操作完,go.mod文件會(huì)修改如下:

module Gone

go 1.14

require (
    github.com/jacksonyoudi/gomodone v1.0.1
)

Major versions

根據(jù)語(yǔ)義版本語(yǔ)義,主要版本與次要版本 不同。主要版本可能會(huì)破壞向后兼容性。從Go模塊的角度來(lái)看,主要版本是 完全不同的軟件包。乍一看這聽(tīng)起來(lái)很奇怪,但這是有道理的:兩個(gè)不兼容的庫(kù)版本是兩個(gè)不同的庫(kù)。

比如下面修改,完全破壞了兼容性。

package gomodone

import (
    "errors"
    "fmt"
)

// Hi returns a friendly greeting
// Hi returns a friendly greeting in language lang
func SayHi(name, lang string) (string, error) {
    switch lang {
    case "en":
        return fmt.Sprintf("Hi, %s!", name), nil
    case "pt":
        return fmt.Sprintf("Oi, %s!", name), nil
    case "es":
        return fmt.Sprintf("?Hola, %s!", name), nil
    case "fr":
        return fmt.Sprintf("Bonjour, %s!", name), nil
    default:
        return "", errors.New("unknown language")
    }
}

如上,我們需要不同的大版本,這種情況下

修改 go.mod如下

module github.com/jacksonyoudi/gomodone/v2

go 1.14

然后,重新tag,push

$ git commit say.go -m "Change Hi to allow multilang"
$ git checkout -b v2 # 用于v2版本,后續(xù)修復(fù)v2
$ git commit go.mod -m "Bump version to v2"
$ git tag v2.0.0
$ git push --tags origin v2 

Updating to a major version

即使發(fā)布了庫(kù)的新不兼容版本,現(xiàn)有軟件 也不會(huì)中斷,因?yàn)樗鼘⒗^續(xù)使用現(xiàn)有版本1.0.1。go get -u 將不會(huì)獲得版本2.0.0。

如果想使用v2.0.0,代碼改成如下:

package main

import (
    "fmt"
    "github.com/jacksonyoudi/gomodone/v2"
)

func main() {
    g, err := gomodone.SayHi("Roberto", "pt")
    if err != nil {
        panic(err)
    }
    fmt.Println(g)
}

執(zhí)行 go mod tidy

go: finding module for package github.com/jacksonyoudi/gomodone/v2
go: downloading github.com/jacksonyoudi/gomodone/v2 v2.0.0
go: found github.com/jacksonyoudi/gomodone/v2 in github.com/jacksonyoudi/gomodone/v2 v2.0.0

當(dāng)然,兩個(gè)版本都可以同時(shí)使用, 使用別名

如下:

package main

import (
    "fmt"
    "github.com/jacksonyoudi/gomodone"
    mv2 "github.com/jacksonyoudi/gomodone/v2"
)

func main() {
    g, err := mv2.SayHi("Roberto", "pt")
    if err != nil {
        panic(err)
    }
    fmt.Println(g)

    fmt.Println(gomodone.SayHi("Roberto"))
}

執(zhí)行一下 go mod tidy

Vendoring

默認(rèn)是忽略vendor的,如果想在項(xiàng)目目錄下有vendor可以執(zhí)行下面命令

$go vendor

當(dāng)然,如果構(gòu)建程序的時(shí)候,希望使用vendor中的依賴,

$ go build -mod vendor

IDEA下開(kāi)發(fā)GO

  • 創(chuàng)建go項(xiàng)目

  • 創(chuàng)建完項(xiàng)目,會(huì)自動(dòng)生成go mod文件
    如果需要修改,可以手動(dòng)修改,加入git等操作

  • 寫業(yè)務(wù)邏輯代碼

  • 解決依賴,更新go.mod

  • go build

總結(jié)

到此這篇關(guān)于go mod詳細(xì)使用教程的文章就介紹到這了,更多相關(guān)go mod使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言并發(fā)爬蟲(chóng)的具體實(shí)現(xiàn)

    Go語(yǔ)言并發(fā)爬蟲(chóng)的具體實(shí)現(xiàn)

    本文主要介紹了Go語(yǔ)言并發(fā)爬蟲(chóng)的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • go語(yǔ)言的變量定義示例詳解

    go語(yǔ)言的變量定義示例詳解

    這篇文章主要為大家介紹了go語(yǔ)言的變量定義示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例

    Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例

    這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例,代碼和圖文講解的很清晰,有感興趣的可以學(xué)習(xí)下
    2021-03-03
  • 在Go語(yǔ)言開(kāi)發(fā)中實(shí)現(xiàn)高性能的分布式日志收集的方法

    在Go語(yǔ)言開(kāi)發(fā)中實(shí)現(xiàn)高性能的分布式日志收集的方法

    本文介紹了在Go語(yǔ)言開(kāi)發(fā)中實(shí)現(xiàn)高性能分布式日志收集的關(guān)鍵步驟和考慮因素,包括日志生成與采集、日志傳輸、日志收集器的高性能網(wǎng)絡(luò)I/O、日志存儲(chǔ)與分析、監(jiān)控與告警系統(tǒng)、擴(kuò)展性與可維護(hù)性等方面,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • Go語(yǔ)言七篇入門教程六網(wǎng)絡(luò)編程

    Go語(yǔ)言七篇入門教程六網(wǎng)絡(luò)編程

    這篇文章主要為大家介紹了Go語(yǔ)言的網(wǎng)絡(luò)編程,其中包含了Socket編程,Http編程以及RPC編程,本篇文章是Go語(yǔ)言七篇入門系列文章,有需要的朋友可以借鑒下
    2021-11-11
  • go與go mod命令使用方式以及遇到的問(wèn)題

    go與go mod命令使用方式以及遇到的問(wèn)題

    這篇文章主要介紹了go與go mod命令使用方式以及遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 深入淺出go依賴注入工具Wire的使用

    深入淺出go依賴注入工具Wire的使用

    但隨著項(xiàng)目規(guī)模的增長(zhǎng),組件之間的依賴關(guān)系變得復(fù)雜,手動(dòng)管理可能會(huì)很繁瑣,所以本文將深入探討一個(gè)備受歡迎的?Go?語(yǔ)言依賴注入工具——?Wire,感興趣的可以了解下
    2023-09-09
  • gORM操作MySQL的實(shí)現(xiàn)

    gORM操作MySQL的實(shí)現(xiàn)

    本文主要介紹了gORM操作MySQL的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Go語(yǔ)言實(shí)現(xiàn)釘釘發(fā)送通知

    Go語(yǔ)言實(shí)現(xiàn)釘釘發(fā)送通知

    本文通過(guò)代碼給大家介紹了Go語(yǔ)言實(shí)現(xiàn)釘釘發(fā)送通知,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Go語(yǔ)言的管道Channel用法實(shí)例

    Go語(yǔ)言的管道Channel用法實(shí)例

    這篇文章主要介紹了Go語(yǔ)言的管道Channel用法,實(shí)例分析了Go語(yǔ)言中管道的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02

最新評(píng)論

宜城市| 平陆县| 沂源县| 延长县| 卓尼县| 锡林郭勒盟| 柘荣县| 新泰市| 新建县| 开原市| 城固县| 武鸣县| 沭阳县| 犍为县| 鄄城县| 延川县| 杂多县| 崇州市| 文水县| 昭通市| 新野县| 武定县| 安陆市| 凉山| 龙江县| 永平县| 彩票| 左贡县| 南皮县| 卫辉市| 航空| 抚顺市| 通江县| 廊坊市| 柳林县| 繁昌县| 丹棱县| 抚顺市| 三河市| 页游| 延边|