go语言环境配置-项目初始化-编译

环境讲解

go命令依赖一个重要的环境变量:$GOPATH
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;
当有多个GOPATH时默认将go get获取的包存放在第一个目录下
gopath有三个子目录,bin存放编译好的二进制文件,pkg编译时生成的中间文件,src存放源代码
$GOROOT使go的安装路径

安装及配置环境

apt-get install golang    #安装go语言
go env       #查看go语言配置环境
go version   #查看版本
vim /etc/profile  
export GOROOT=/usr/local/go   #设置为go安装的路径,有些安装包会自动设置默认的goroot
export GOPATH=$HOME/gocode   #默认安装包的路径,可更改
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 编辑path
source /etc/profile #使配置生效

注:将source /etc/profile写在.bashrc(.zshrc)里可以避免每次开机都要输入该命令

环境变量详解

go env //打印go所有默认环境变量
go env gopath //打印某个环境变量的值

go111module //使用go module进行包管理,可以设为on或auto
goroot //go安装目录
gopath //go工作区目录,内有三个文件夹(src/pkg/bin)分别存放源码/包文件和二进制文件
goos及goarch //goos的默认值是我们当前的操作系统, 如果windows,linux,darwin。 goarch则表示cpu架构,如386,amd64,arm等。更改这两个变量可以即可方便的进行交叉编译
goarm  //针对arm架构处理器,可以为5或6
gomaxprocs  //用于设置应用程序可使用的处理器个数与核数

goos和goarch的值(成对出现,只可能为如下之一)

$goos     $goarch

android     arm

darwin     386

darwin     amd64

darwin     arm

darwin     arm64

dragonfly   amd64

freebsd     386

freebsd     amd64

freebsd     arm

linux     386

linux     amd64

linux     arm

linux     arm64

linux     ppc64

linux     ppc64le

linux     mips

linux     mipsle

linux     mips64

linux     mips64le

linux     s390x

netbsd     386

netbsd     amd64

netbsd     arm

openbsd     386

openbsd     amd64

openbsd     arm

plan9     386

plan9     amd64

solaris     amd64

windows     386

windows     amd64

编译go程序

使用类似go get github.com/subfinder/subfinder可以直接卸载编译好程序,编译好的文件在bin中。
使用go get -u可以更新程序

解决缺少包的问题

由于众所周知的原因,golang在下载golang.org的包时会出现访问不了的情况。尤其是x包,很多库都依赖于它。由于x包在github上都有镜像,我们可以使用从github.com上先clone下来,再做软链接的方式曲线救国。

mkdir -p $GOPATH/src/github.com/golang/
git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net
git clone https://github.com/golang/text.git $GOPATH/src/github.com/golang/text
git clone https://github.com/golang/lint.git $GOPATH/src/github.com/golang/lint
git clone https://github.com/golang/tools.git $GOPATH/src/github.com/golang/tools
git clone https://github.com/golang/crypto.git $GOPATH/src/github.com/golang/crypto

ln -s $GOPATH/src/github.com/golang/ $GOPATH/src/golang.org/x

对git设置代理直接下载的方法可参考https://studygolang.com/articles/05690

使用go mod

go mod是go的包管理工具,类似python的pip

配置go mod

go env -w GO111MODULE=auto   //或on
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的

初始化项目

可以随便找一个目录创建项目

mkdir Gone
cd Gone
go mod init Gone

文件夹下会新建一个go.mod文件

添加依赖

创建一个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")
}

执行 go run main.go 运行代码会发现 go mod 会自动查找依赖自动下载
再查看 go.mod发现多了一行

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

go 会自动生成一个 go.sum 文件来记录 dependency tree。一般不用管go.sum文件

go mod tidy

go mod tidy可以引用项目需要的依赖增加到go.mod文件。
去掉go.mod文件中项目不需要的依赖。

go clean -modcache

清理缓存

go get升级

运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
运行 go get -u=patch 将会升级到最新的修订版本
运行 go get package@version 将会升级到指定的版本号version
运行go get如果有版本的更改,那么go.mod文件也会更改

VS Code配置

带参数调试

选择运行->打开配置,配置launch.json
打开配置文件之后,我们可以看到它有个 args 选项,里面就可以填写我们要给它的参数,

(如果没有 args 选项,也可以自己手动添加一个)

例如这里我给它的参数是 make,那我就在里面写 “make”,

(它是一个 list,可以有多个参数,注意要用上引号,防止由于参数中包含空格引起的问题):

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "args":["check","127.0.0.1"],
            "program": "${fileDirname}"
        }
    ]
}

编译

编译,去掉调试信息和符号信息,可减小文件大小

 go build -ldflags "-s -w" -o target.exe .\target.go

环境讲解

go命令依赖一个重要的环境变量:$GOPATH
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;
当有多个GOPATH时默认将go get获取的包存放在第一个目录下
gopath有三个子目录,bin存放编译好的二进制文件,pkg编译时生成的中间文件,src存放源代码
$GOROOT使go的安装路径

安装及配置环境

apt-get install golang    #安装go语言
go env       #查看go语言配置环境
go version   #查看版本
vim /etc/profile  
export GOROOT=/usr/local/go   #设置为go安装的路径,有些安装包会自动设置默认的goroot
export GOPATH=$HOME/gocode   #默认安装包的路径,可更改
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 编辑path
source /etc/profile #使配置生效

注:将source /etc/profile写在.bashrc(.zshrc)里可以避免每次开机都要输入该命令

环境变量详解

go env //打印go所有默认环境变量
go env gopath //打印某个环境变量的值

go111module //使用go module进行包管理,可以设为on或auto
goroot //go安装目录
gopath //go工作区目录,内有三个文件夹(src/pkg/bin)分别存放源码/包文件和二进制文件
goos及goarch //goos的默认值是我们当前的操作系统, 如果windows,linux,darwin。 goarch则表示cpu架构,如386,amd64,arm等。更改这两个变量可以即可方便的进行交叉编译
goarm  //针对arm架构处理器,可以为5或6
gomaxprocs  //用于设置应用程序可使用的处理器个数与核数

goos和goarch的值(成对出现,只可能为如下之一)

$goos     $goarch

android     arm

darwin     386

darwin     amd64

darwin     arm

darwin     arm64

dragonfly   amd64

freebsd     386

freebsd     amd64

freebsd     arm

linux     386

linux     amd64

linux     arm

linux     arm64

linux     ppc64

linux     ppc64le

linux     mips

linux     mipsle

linux     mips64

linux     mips64le

linux     s390x

netbsd     386

netbsd     amd64

netbsd     arm

openbsd     386

openbsd     amd64

openbsd     arm

plan9     386

plan9     amd64

solaris     amd64

windows     386

windows     amd64

编译go程序

使用类似go get github.com/subfinder/subfinder可以直接卸载编译好程序,编译好的文件在bin中。
使用go get -u可以更新程序

解决缺少包的问题

由于众所周知的原因,golang在下载golang.org的包时会出现访问不了的情况。尤其是x包,很多库都依赖于它。由于x包在github上都有镜像,我们可以使用从github.com上先clone下来,再做软链接的方式曲线救国。

mkdir -p $GOPATH/src/github.com/golang/
git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net
git clone https://github.com/golang/text.git $GOPATH/src/github.com/golang/text
git clone https://github.com/golang/lint.git $GOPATH/src/github.com/golang/lint
git clone https://github.com/golang/tools.git $GOPATH/src/github.com/golang/tools
git clone https://github.com/golang/crypto.git $GOPATH/src/github.com/golang/crypto

ln -s $GOPATH/src/github.com/golang/ $GOPATH/src/golang.org/x

对git设置代理直接下载的方法可参考https://studygolang.com/articles/05690

使用go mod

go mod是go的包管理工具,类似python的pip

配置go mod

go env -w GO111MODULE=auto   //或on
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的

初始化项目

可以随便找一个目录创建项目

mkdir Gone
cd Gone
go mod init Gone

文件夹下会新建一个go.mod文件

添加依赖

创建一个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")
}

执行 go run main.go 运行代码会发现 go mod 会自动查找依赖自动下载
再查看 go.mod发现多了一行

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

go 会自动生成一个 go.sum 文件来记录 dependency tree。一般不用管go.sum文件

go mod tidy

go mod tidy可以引用项目需要的依赖增加到go.mod文件。
去掉go.mod文件中项目不需要的依赖。

go clean -modcache

清理缓存

go get升级

运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
运行 go get -u=patch 将会升级到最新的修订版本
运行 go get package@version 将会升级到指定的版本号version
运行go get如果有版本的更改,那么go.mod文件也会更改

VS Code配置

带参数调试

选择运行->打开配置,配置launch.json
打开配置文件之后,我们可以看到它有个 args 选项,里面就可以填写我们要给它的参数,

(如果没有 args 选项,也可以自己手动添加一个)

例如这里我给它的参数是 make,那我就在里面写 “make”,

(它是一个 list,可以有多个参数,注意要用上引号,防止由于参数中包含空格引起的问题):

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "args":["check","127.0.0.1"],
            "program": "${fileDirname}"
        }
    ]
}

编译

编译,去掉调试信息和符号信息,可减小文件大小

 go build -ldflags "-s -w" -o target.exe .\target.go

你可能感兴趣的:(golang,golang)