当前位置 博文首页 > JadeJones的博客:Golang 开始之路

    JadeJones的博客:Golang 开始之路

    作者:[db:作者] 时间:2021-06-22 09:16

    目录

    1.Golang 开始之路

    1.1 windows 快速安装 Golang

    1.2 linux 下安装

    1.3 GOROOT和GOPATH

    1.4 GO111MODULE

    1.5 GOPROXY

    1.6 Go 开发编辑器

    2. 第一个 Go 程序

    2.1 Hello World

    2.2 Go build

    2.3 Go install

    2.4 跨平台编译


    1.Golang 开始之路

    在开始之前不得不认识一下Go的创始人

    go-author

    1.1 windows 快速安装 Golang

    打开golang 官网进行安装

    进入官网,我们点击Download go

    Download-go

    选择我们想要的 go 语言版本进行下载 (这边使用go 1.16.3)

    select-go-version

    1.2 linux 下安装

    如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译(详见文章末尾的跨平台编译)好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。

    我们在版本选择页面选择并下载好go1.16.3.linux-amd64.tar.gz文件:

    wget https://dl.google.com/go/go1.16.3.linux-amd64.tar.gz

    将下载好的文件解压到/usr/local目录下:

    tar -zxvf go1.16.3.linux-amd64.tar.gz -C /usr/local  # 解压

    如果提示没有权限,加上sudo以root用户的身份再运行。执行完就可以在/usr/local/下看到go目录了。

    配置环境变量: Linux下有两个文件可以配置环境变量,其中/etc/profile是对所有用户生效的;$HOME/.profile是对当前用户生效的,根据自己的情况自行选择一个文件打开,添加如下两行代码,保存退出。

    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin

    修改/etc/profile后要重启生效,修改$HOME/.profile后使用source命令加载$HOME/.profile文件即可生效。 检查:

    go version

    go version go1.16.3 linux/amd64

    1.3 GOROOT和GOPATH

    GOROOTGOPATH 都是环境变量,其中 GOROOT 是我们安装go开发包的路径,而从Go 1.8版本开始,Go开发包在安装完成后会为 GOPATH 设置一个默认目录,参见下表。

    GOPATH在不同操作系统平台上的默认值

    平台GOPATH默认值举例
    Windows%USERPROFILE%/goC:\Users\用户名\go
    Unix$HOME/go/home/用户名/go

    1.4 GO111MODULE

    go modules 是 golang 1.11 新加的特性

    GO111MODULE 有三个值:off, on和auto(默认值)。

    GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 GO111MODULE=auto,默认值(go 1.16开始默认值为on),go命令行将会根据当前目录来决定是否启用module功能。

    这种情况下可以分为两种情形: 1.当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。 2.当前文件在包含go.mod文件的目录下面

    在使用模块时,GOPATH是无意义的,不过它还是会把下载的依赖存储在$GOPATH/pkg/mod 中,也会把go install 的结果放在 $GOPATH/bin 中。

    当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的module。

    可以执行下面的命令修改GO111MODULE

    go env -w GO111MODULE=on

    1.5 GOPROXY

    Go1.14版本之后,都推荐使用go mod模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH下面的src目录了,你可以在你电脑的任意位置编写go代码。(网上有些教程适用于1.11版本之前。)

    默认GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct,由于国内访问不到https://proxy.golang.org,所以我们需要换一个PROXY,这里推荐使用https://goproxy.iohttps://goproxy.cn

    可以执行下面的命令修改GOPROXY:

    go env -w GOPROXY=https://goproxy.cn,direct

    1.6 Go 开发编辑器

    Go采用的是UTF-8编码的文本文件存放源代码,理论上使用任何一款文本编辑器都可以做Go语言开发,这里推荐使用VS CodeGolandVS Code是微软开源的编辑器,而Goland是jetbrains出品的付费IDE。

    我们这里使用VS Code 加插件做为go语言的开发工具。

    VS Code介绍

    VS Code全称Visual Studio Code,是微软公司开源的一款免费现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,支持 Win、Mac 以及 Linux平台。

    虽然不如某些IDE功能强大,但是它添加Go扩展插件后已经足够胜任我们日常的Go开发。

    下载与安装

    VS Code官方下载地址:https://code.visualstudio.com/Download

    三大主流平台都支持,请根据自己的电脑平台选择对应的安装包。

    双击下载好的安装文件,双击安装即可。

    配置

    安装中文简体插件

    点击左侧菜单栏最后一项管理扩展,在搜索框中输入chinese ,选中结果列表第一项,点击install安装。

    安装完毕后右下角会提示重启VS Code,重启之后你的VS Code就显示中文啦!

    vscode-chinese

    ?

    安装go扩展

    现在我们要为我们的VS Code编辑器安装Go扩展插件,让它支持Go语言开发。

    vscode-go

    2. 第一个 Go 程序

    2.1 Hello World

    现在我们来创建第一个Go项目——hello。在我们桌面创建一个hello目录。

    在该目录中创建一个main.go文件:

    package main  // 声明 main 包,表明当前是一个可执行程序
    ?
    import "fmt"  // 导入内置 fmt 包
    ?
    func main(){  // main函数,是程序执行的入口
        fmt.Println("Hello World!")  // 在终端打印 Hello World!
    }

    2.2 Go build

    go build表示将源代码编译成可执行文件。

    在hello目录下执行:

    go build

    或者在其他目录执行以下命令:

    go build hello

    go编译器会去 GOPATH的src目录下查找你要编译的hello项目

    编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到hello.exe可执行文件。

    可在终端直接执行该hello.exe文件:

    c:\desktop\hello>hello.exe
    Hello World!

    我们还可以使用-o参数来指定编译后得到的可执行文件的名字。

    go build -o heiheihei.exe

    2.3 Go install

    go install表示安装的意思,它先编译源代码得到可执行文件,然后将可执行文件移动到GOPATH的bin目录下。因为我们的环境变量中配置了GOPATH下的bin目录,所以我们就可以在任意地方直接执行可执行文件了。

    2.4 跨平台编译

    默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

    只需要指定目标操作系统的平台和处理器架构即可:

    SET CGO_ENABLED=0  // 禁用CGO
    SET GOOS=linux  // 目标平台是linux
    SET GOARCH=amd64  // 目标处理器架构是amd64

    使用了cgo的代码是不支持跨平台编译的

    然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。

    Mac 下编译 Linux 和 Windows平台 64位 可执行程序:

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
    CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

    Linux 下编译 Mac 和 Windows 平台64位可执行程序:

    CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
    CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

    Windows下编译Mac平台64位可执行程序:

    SET CGO_ENABLED=0
    SET GOOS=darwin
    SET GOARCH=amd64
    go build

    两个重要的环境变量 GOOSGOARCH,其中 GOOS 指的是目标操作系统 , GOARCH 指的是目标处理器的架构。

    下面可以通过命令 go tool dist list列出可用组合

    go tool dist list

    aix/ppc64

    android/386

    android/amd64

    android/arm

    android/arm64

    darwin/amd64

    darwin/arm64

    dragonfly/amd64

    freebsd/386

    freebsd/amd64

    freebsd/arm

    freebsd/arm64

    illumos/amd64

    ios/amd64

    ios/arm64

    js/wasm

    linux/386

    linux/amd64

    linux/arm

    linux/arm64

    linux/mips

    linux/mips64

    linux/mips64le

    linux/mipsle

    linux/ppc64

    linux/ppc64le

    linux/riscv64

    linux/s390x

    netbsd/386

    netbsd/amd64

    netbsd/arm

    netbsd/arm64

    openbsd/386

    openbsd/amd64

    openbsd/arm

    openbsd/arm64

    openbsd/mips64

    plan9/386

    plan9/amd64

    plan9/arm

    solaris/amd64

    windows/386

    windows/amd64

    windows/arm

    现在,开启你的Go语言学习之旅吧。人生苦短,let’s Go.

    下一篇:没有了