文档参考
03|配好环境:选择一种最适合你的Go安装方法-极客时间
环境
Windows 10 64位
这里有三台电脑, 即三个环境[公司一台, 家里两台] 环境可能会有些许不同, 但是流程/原理都是相同的.
另外环境:
Mac Pro
1. 安装 Windows
方式一
使用msi安装包 // 需要能正常访问Google
https://dl.google.com/go/go1.14.2.windows-amd64.msi
默认安装在c:\go
下面是之前安装的go.1.12版本
配置环境变量
GOROOT 是安装路径, GOPATH是项目路径[后面再说]
Note
系统环境变量 Path默认为自动添加上c:\go\bin 即go的二进制可执行文件的目录
方式二
Zip压缩包 // 解压即是安装, 但是一些环境变量之类需要自己手动添加, 不单单是Go, 其他语言/软件也是一样, 如PHP等
下载此zip文件 并提取到你的自选目录(建议是c:\Go ):
https://dl.google.com/go/go1.14.2.windows-amd64.zip // 下载链接
若你选择了 c:\Go 之外的目录,你必须为你所选的路径设置 GOROOT 环境变量。
将你的Go根目录中的 bin 子目录(例如 c:\Go\bin )添加到你的 PATH 环境变量中。
请确保Path变量生效
测试是否安装成功
一切正常!
如果安装不成功, 多试几次.
http://docscn.studygolang.com/doc/install // 安装文档
Mac
方式也是有二,这里通过下载安装包方式安装
source code dir
即 ~ 用户家目录
安装路径
➜ ~ go env GOROOT /usr/local/go ➜ ~ go env GOPATH /Users/kumu/go ➜ ~
默认安装路径,以及各种配置都是Go官方推荐的方式。
查看Go的环境变量列表
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/kumu/Library/Caches/go-build"
GOENV="/Users/kumu/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/kumu/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/kumu/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.17.6"
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 -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/t9/btl9s_gs24322kcq5dy5n2t80000gn/T/go-build205395940=/tmp/go-build -gno-record-gcc-switches -fno-common"
2. 编码工具
推荐使用IDE, 文本编辑器备用.
GoLand // 从phpstorm 可以初步判断应该挺好用, 但是收费, 可以先试用一个月 [对于新手,推荐使用 GoLand] -- 觉得好用,怎么获取,网上还是有不方法的~
Visual Studio Code // 还是推荐 -- 对任何语言,只要安装相应地语言扩展就是相应语言的IDE
备注:
以上两个IDE工具, 这里或交叉使用. 只是工具而已, 原则就是那个使用舒服, 用那个.
不过我的电脑上,就安装有两个IDE,不论是针对Go,还是PHP.
另外还有文本编辑器,Sublime,Notepad++
使用 VS Code 的话需要安装Go 扩展. 见下方
3. 第一个go程序 3.1 创建工作目录/配置工作目录变量
上面准备就绪, 就可以直接开始编写第一个 Go 语言程序了
还是遵循编程语言的一贯传统,我们从 Hello World 开始 Go 语言学习之旅.
首先,我们进入用户根目录,并在该目录下创建一个 go 目录,用来存放所有的 Go 语言代码:
使用git bash // 推荐使用, 也可以使用cmd, 有时候会有问题, 只要知道能解决问题即可,
cd ~ mkdir go
之所以在这里位置创建这个目录来存放代码,是因为 Go 语言默认的 GOPATH 环境变量值就是该路径,
不管是 Linux、Mac 还是 Windows 都是如此,比如 Windows 系统下可以通过 系统环境变量 界面看到该配置:// 没有, 就自行配置
GOPATH 的用处:
Go 语言在编译程序时,会从 GOPATH 配置的路径里面去查找源文件并完成构建。
3.2 工作目录下, 新建项目目录
即这里在 go 目录下新增一个项目,取名为 test ,进入该项目目录,
创建一个 Go 文件 hello.go :// 下面是命令上下操作
cd ~/go mkdir test cd test touch hello.go
3.3 书写 hello.go 文件代码
和 PHP 源码存放在 .php 文件类似,Go 语言源码都是存放在 .go 文件中. // 这里先使用文本编辑器打开[sublime或者Windows自带的文本编辑器]
文件内容:
package main
import "fmt"
func main() { fmt.Println("hello, world") }
至此, 一个简单的打印 Hello World 的 Go 代码就写好了.
下面我们简单分析下每一行代码的含义。参见 3.4
3.4 代码解读
和 Java 类似,Go 使用包 [即package] 作为基本单位来管理代码 (可以类比为 PHP 中的命名空间),
每个 Go 源代码文件的开头都是一个 package 声明,表示该文件中 Go 代码所属的包。
包是 Go 语言里最基本的分发单位,也是工程管理中依赖关系的体现。
要生成 Go 可执行程序,必须建立一个名字为 main 的包,并且在该包中包含一个叫 main() 的主函数,该函数是 Go 可执行程序的执行起点,这一点和 C 语言和 Java 语言很像,后续编译 Go 项目程序的时候也要从包含 main 包的文件开始。
Go 语言的 main() 函数不能带参数,也不能定义返回值。
在包声明之后,是一系列的 import 语句,用于导入该程序所依赖的包(可类比为 PHP 中通过 use 引入其它命名空间的类来理解)。
由于本示例程序用到了Println() 函数,所以需要导入该函数所属的 fmt 包。
有一点需要注意,与 Java 和 PHP 不同,在 Go 语言中,不得包含在源代码文件中没有用到的包,否则 Go 编译器会报编译错误.
这与下面的强制函数左花括号 { 的放置位置以及之后会提到的函数名的大小写规则,均体现了 Go 语言在语言层面解决软件工程问题的设计哲学。
所有 Go 函数(包括在面向对象编程中会提到的类型成员函数)都以关键字 func 开头(这一点与 PHP、Java、JavaScript 等语言通过 function 定义函数不同)。
另外在 Go 函数中,左花括号 { 必须函数定义行的末尾,不能另起一行,否则 Go 编译器报告编译错误:
syntax error: unexpected semicolon or newline before {
另外,与 Python、JavaScript 类似,Go 程序并不要求在每个语句后面加上分号表示语句结束,这也是与 PHP、Java 等语言的不同之处。
最后,函数体很简单,就是调用 fmt 包提供的 Println 函数打印「hello,world」这行字符串,Go 语言可以直接通过包名+「.」号引用定义在该包中的函数。
Note
所有的第三方包,大写首字母函数都是已导出的函数,可以使用,如果小写,说明未导出,无法使用
3.5 编译 & 运行程序
对以上代码含义有了大致的了解后,我们接下来要编译并运行第一个 Go 程序,和 PHP 不同,Go 语言是编译型的静态语言(和 Java、C 一样),在运行 Go 程序之前,先要将其编译成二进制可执行文件。
我们可以通过 Go 语言提供的 go build 命令对 Go 程序进行编译,然后运行编译后的可执行文件执行 Go 程序代码:
备注
上面在cmd中,如果使用./hello.exe执行,出现报错, 请去掉 ./
如果在git bash执行,需要加上 ./
可以看到,代码执行成功,打印出了「hello,world」
此外,我们还可以通过 go run 命令来达到同样的效果,该命令将 编译和执行 指令合二为一,会在编译之后立即执行相应的可执行文件显示执行结果:// 没有生成hello.exe文件 [可以做测试]
第一个 Go 程序执行结束.
补充
Mac Pro 下
引入第三方库函数,编译&执行:
Call code in an external package, 本地代码中调用第三方库
执行命令超时,终止,重新执行,然后可以看到没有下划波浪线警告提示
翻译:不要通过共享内存来交流,而是通过交流来共享内存。
先编译
go build main.go
执行可执行文件
详情参见:
零基础入门(一):第一个 Go 程序 | 快速入门 | Go 入门教程
4. 命令行工具 // 交叉使用
Windows
cmd / power shell
git bash
Mac
Terminal
5. 代码入门教程
GitHub - Go-zh/tour: Go 语言官方教程中文版
Go 语言之旅 --- 已经大致过了一遍,很快地,有些地方也是不理解,但是第一遍不要紧,后面再继续深入理解,实践即可~
后续补充 ... |