久闻Go语言大名,了解它是Google开发的一门静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。由于Go对于高并发的处理表现优异,很多互联网大厂纷纷投奔,比如听说字节跳动早期为了快速构建系统,很多后台应用使用Python语言,随着用户量和访问量的增加逐渐使用Go进行替代,还有滴滴、腾讯内部也都有很多采用Go语言作为后端语言的项目。
虽然之前也尝试学习和编写简单Go程序,但并未完全坚持下来,现在重拾起来,并通过学习笔记的方式进行记录,希望借此入门Go语言。
通过查阅资料可以得知Go具有以下特性,
由于个人学习习惯,在学习一门语言的时候不喜欢看大量理论,所以“该知道的都知道,不知道的慢慢了解”,直接搭建环境开干!
之前一直习惯于在Windows下进行开发和编程,进行过Go环境安装,Windows下安装Go环境比较简单,直接运行MSI安装包,并在环境变量配置GOPATH=安装位置
即可。
因为一直听说Linux / Mac系统对开发工作更加友好,尝试在Virtual Box中搭建Ubuntu虚拟机,并基于此系统进行Go环境的搭建,后续通过Windows下的VSCode的 Remote-SSH 插件远程连接,进行开发工作。
下面记录在Ubuntu虚拟环境下搭建Go环境的过程,及在过程中遇到的关于Linux下设置环境变量的坑。
网上有大量教程,不再赘述。(替换为国内代理源)
参考 https://studygolang.com/dl 和 https://docs.studygolang.com/doc/install
```bash
sudo tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
```
```bash
export PATH=$PATH:/usr/local/go/bin
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
```
```bash
go version
```
虚拟机网络配置选择“桥接网卡”,在Remote-SSH插件中配置虚拟机IP地址即可远程连接上虚拟机环境。
为在开发过程中获得更友好的代码提示和调试体验,安装Go插件。
- 使用```Ctrl + shift + P```调用VS Code快速命令。
- 搜索Toggle Terminal打开终端。
- mkdir新建一个Projects文件夹。
- code Projects即可打开Projects文件夹,把文件夹作为项目文件夹在下面编写代码。
在terminal界面配置好环境变量后,发现go version可以返回正确提示。但当重开terminal界面或者重启虚拟机后再次运行,有错误提示。
zsh: command not found: go
仔细回头翻阅官网的安装指南https://docs.studygolang.com/doc/install,发现有这样的说法,
You can do this by adding the following line to your $HOME/.profile or /etc/profile (for a system-wide installation):
export PATH=$PATH:/usr/local/go/bin
go环境变量如果直接写在terminal只对当前窗口有效,需要写入到 $HOME/.profile 或者 /etc/profile(对所有用户有效)中,可参考https://www.cnblogs.com/xiaofeng666/p/11171783.html 和 https://www.linuxprobe.com/environment-variable-configuration.html,具体操作步骤,
生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量配置方法六:vim /etc/environment
该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限:
chmod -v u+w /etc/environment
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
操作完发现仍有问题,报错```zsh: command not found: go```,通过查阅资料,发现是由于自己安装了zsh,
需要在把.bash_profile 全部环境变量加入 zsh shell,或者在zsh shell中加入go环境变量。这里直接将环境变量添加到.zshrc中了。
```bash
sudo vim .zshrc
export PATH=$PATH:/usr/local/go/bin
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
source ~/.zshrc
## 第一个Go程序 Hello World
永远的```Hello,World```:
```go
package main
import "fmt"
func main() {
/ Always Hello, World! /
fmt.Println("Hello, World!")
}
解释:
★注:Go 比较特别,遵守分号注入规则(automatic semicolon injection):编译器会在每行代码尾部 -- 特定分隔符后加; 来分隔多条语句,比如会在 ) 后加分号:所以{} 中 "{" 不可以单独放一行,防止出现:
// 等效于
func main(); // 无函数体
{
println("hello world")
}
GO111MODULE
(和GOPROXY
)的小困惑对于环境变量,GO111MODULE
和GOPROXY
的作用理解的不是很透彻,翻看了一些博客但还是一知半解,此处不求甚解🙅,略略略~,等到了“第8节、包管理”后再回头研究一下这里,参考:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。