开整
老实说,安装这货真的很简单,但是上手玩儿实在不易。特别是那些框架啥的…
访问官网正确姿势
更新: 官方新增了一个地址可直接访问:https://golang.google.cn
首先说说这个,平时 小飞机 开着从来不在意,也是运气 好 前几天突然挂了发现 https://golang.org 它居然打不开?
当然了,我们 dig
一下发现了 google.com
的身影就不奇怪了。
以上以下都不重要,有飞机或者其它手段的略过。
这里我这里要说的是,如果你的宽带有 IPv6,是能直接打开的。
怎么看自己是否支持 IPv6 呢?戳这里:https://test-ipv6.com/index.html.zh_CN,它会告诉你的。
具体方法就是戳开 hosts
加上:
2607:f8b0:4009:812::2011 golang.org
来源:https://golang.org.ipaddress.com
安装
这里除了 Windows without WLS(不可安装 Linux 子系统的 Windows)我相信没有比包管理器安装的方式更舒服了:
macOS/Linux/WLS 直接安装 HomeBrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 然后直接 install go
brew install go
Windows 7/8/8.1/Server 怎么办?下载 msi
安装包…
安装过程结束后,我们只需要在控制台/终端上执行一下 go version
能看到版本就说明妥妥的了。此时我们可以敲敲万能的 Hello World
开始第一行代码。
如果还不知道从哪儿开始:Go 语言教程 | 菜鸟教程【非推广,该站有在线运行很方便】
视频可以去慕课找入门。
额外说明
有个小知识:
Golang 在 11 版本开始后,支持了一个功能叫 Module,俗称包管理机制。
需要注意的是这个小知识对以后的框架运用至关重要。
包管理 Module
Module 是在当需要使用三方组件包括框架之类时的最佳方案。
多说两句
我们在浏览框架文档时时常会看到诸如 Gin 框架中类似这样的命令:go get -u github.com/gin-gonic/gin
建议在执行这类命令前先执行 go env
瞧瞧当前配置,重点是 GOPATH
部分
自行更改,在 macOS 中该值默认为 ~/Go
,通过 go get
获取的包会存储在 GOPATH
中,也就是 ~/Go/pkg/mod
根据规则 $GOPATH
目录内应有两个文件夹,分别是 pkg
和 src
govendor
另外还有一个工具叫做 govendor,通过 brew install govendor
可安装使用
当然也可以通过 go get github.com/kardianos/govendor
的方式安装
govendor
命令只能在 $GOPATH
的目录内使用,一般会在 $GOPATH/src/项目名
下使用
当然这个目录的结构一般为 $GOPATH/src/github.com/GitHub 用户名/项目名
在该结构的项目目录内执行 govendor init
初始化后会在项目根目录下生成 vendor
文件夹
随后执行类似这样的命令 govendor fetch github.com/gin-gonic/gin
即可获取框架(此为 Gin 框架)。
但是!
很可能会下载失败,同样的如果有方法解决的童鞋可以配合 Proxifier 搞定
否则依靠 IPv6 也是可以的哟~,hosts
加上:
2607:f8b0:4001:c1b::52 go.googlesource.com
216.239.36.10 google.com
虽然麻烦且不好用,但是我们也得了解这玩意儿就是这么折腾的(😑我也冇法)
如果没有 IPv6 就使用下方镜像解决~
Module 镜像
阿里那个我一直失败不知道为啥,这里首推七牛云的 https://goproxy.cn。点击会自动跳转 GayHub 有设置方法。
第二选择使用 https://goproxy.io/zh/,点击后也有设置方法。
其实设置也非常简单,就是俩环境变量:
export GO111MODULE="on"
export GOPROXY="https://goproxy.cn,https://goproxy.io,direct"
这样设置后在项目中 import
三方包飕飕的飞快就下载下来了。
参考环境变量
此为 macOS 下通过 brew
安装的 Go。
# Golang path
export GOROOT="/usr/local/opt/go/libexec"
export GOPATH="$HOME/Go"
# Golang 1.11+ Module and Proxy
export GO111MODULE=on
export GOPROXY="https://goproxy.cn,https://goproxy.io,direct"
初始化框架
此处依旧以 Gin 框架为例。
首先获取 Gin 框架:
go get -u github.com/gin-gonic/gin
初始化
以下会有两个不同的目录结构用于初始化项目
方式一
方式一比较大众
首先进入 $GOPATH/src
并创建 github.com/username/ProjectName
目录。
此处假设 $GOPATH
为 ~/Go
,则该目录看起来就像这样 ~/Go/src/github.com/maxsky/Go-Demo
在该项目目录下执行 go mod init && go mod vendor
后即可完成初始化。
方式二
如果你不喜欢 ~/Go/src/github.com/maxsky/Go-Demo
这个路径,你完全可以将项目放置到任意位置
如:~/Desktop/Go-Demo
(任性扔桌面)
唯一有一点点区别的地方在于,你不能直接使用 go mod init
进行模块初始化
你需要这样:
# 其中 example.com 可以是 github.com/maxsky,也可以是自己的域名如 maxsky.cc
# 举两个栗子:go mod init github.com/maxsky/Go-Demo | go mod init maxsky.cc/Go-Demo
go mod init example.com/Go-Demo # 域名后要跟上项目名
最后同样执行 go mod vendor
即可完成初始化。
使用哪种方式取决于自己的喜好。
执行 Demo
进入项目根目录执行:
curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go
随后运行该文件:(会监听 8080
端口,注意冲突)
go run main.go
戳开浏览器请求:http://localhost:8080/ping,然后 pong 的一声~结束。