go语言简单介绍与module安装

Go 是Google开发的一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

go 安装

https://golang.org/dl/ 下载最新版本的编译好的GoLang(国内好像打不开哦),并进行完整性验证,然后解压即可运行。

1
2
3
wget -c https://storage.googleapis.com/golang/go1.12.9.linux-amd64.tar.gz
shasum -a 256 go1.12.9.linux-amd64.tar.gz
tar -xvzf go1.12.9.linux-amd64.tar.gz

添加环境变量

1
2
3
export PATH=$PATH:/path/go/bin
export GOPATH="/path/go/src"
export GOBIN="/path/go/bin"

检测安装情况

1
go version

go env来察看相关路径设置是否正确。

go module使用

go module 是go官方在go1.11版本引进的,用来管理包的依赖关系,可以通过版本号来进行迭代,通过go.mod来管理项目依赖的模块。

go.mod格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
module github.com/martian-lang/martian

go 1.12

require (
github.com/cloudfoundry/gosigar v1.1.0
github.com/dustin/go-humanize v0.0.0-20180713052910-9f541cc9db5d
github.com/google/shlex v0.0.0-20150127133951-6f45313302b9
github.com/martian-lang/docopt.go v0.0.0-20180828184714-57cc8f5f669d
github.com/satori/go.uuid v1.1.1-0.20160713180306-0aa62d5ddceb
github.com/golang/sys v0.0.0-20190209173611-3b5209105503
github.com/golang/tools v0.0.0-20190219175448-49d818b07734
)

  • module 用来定义项目的模块名字。
  • go 1.12 用来表示,项目使用的go版本。
  • require 用来表示项目引用的模块和模块对应的版本号。

一个模块是由一组相关的软件包组成的一个单元,如下:

go项目通常放到src目录中。

如同CRAN 和 CPAN,go module也有对应仓库,主要是golang.org(官方仓库),https://goproxy.io/(最大代理仓库)和github

golang.org

类似于python安装module仅需pip install XXX,perl仅需cpanm XXX和R仅需library("XXX")一样,go module的安装也可以通过命令直接安装。
如尝试安装 sys module:

1
go get -u golang.org/x/sys

但结果却是报错,不应该啊,网上各种教程甚至官网都是写的这样下载啊:

1
2
go: golang.org/x/sys@v0.0.0-20190209173611-3b5209105503: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
go: error loading module requirements

(┬_┬)因为万恶的墙,go是Google开发的……..,难道不能用了吗?goproxy.iogithub就是救世主。

goproxy.io

官网一张图看下 goproxy.io 的作用:解救我们于水生火热中……..

1
2
3
4
# 开启 go modules 特征
export GO111MODULE=on
# 设置GOPROXY环境变量
export GOPROXY=https://goproxy.io

然后重新下载所需module即可

1
go get -u golang.org/x/sys

github

两种方式:
将github相关仓库 git clonegopath/src/golang.org/x/ 目录下,然后cd 到相应目录执行go install golang.org/x/sys

1
2
3
4
mkdir -p $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/sys.git sys
go install golang.org/x/sys

执行go install之后没有提示,就说明安装好了。

或者直接

1
go get -u -v gitlab.com/groupName/projectName


总结有效办法是将所需module的go.mod文件中的任何golang.org指定替换为相应的github位置。


我的 Go 环境如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
GOARCH="amd64"
GOBIN="/public/home/zpxu/software/go/bin"
GOCACHE="/public/home/zpxu/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/public/home/zpxu/software/go/src"
GOPROXY="https://goproxy.io"
GORACE=""
GOROOT="/public/home/zpxu/software/go"
GOTMPDIR=""
GOTOOLDIR="/public/home/zpxu/software/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/public/home/zpxu/software/cellranger/martian/go.mod"
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build473583117=/tmp/go-build -gno-record-gcc-switches"


参考资料

  1. How to Install GoLang (Go Programming Language) in Linux
  2. Go中的modules初步使用
tiramisutes wechat
欢迎关注

本文标题:go语言简单介绍与module安装

文章作者:tiramisutes

发布时间:2019年08月29日 - 11:17

最后更新:2019年08月30日 - 13:41

原始链接:http://tiramisutes.github.io/2019/08/29/go.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%