windows 下开发或者使用虚拟机搭建 linux 开发环境。
linux系统目录结构:
/
/bin
/sbin
/usr
/bin
/local
/include
/lib
/lib
/home
/etc
/opt
/:根目录,linux下只有一个根目录
/bin ,/usr/bin:可以执行的二进制文件的目录, 如常用的 tar, mv ,cp ,ls 等cmd
/opt:给主机额外安装软件的目录
/root:管机员 root 的家目录
用户目录
- /home/username
linux 下配置
当前os是 ubuntu
zhang@ubuntu:~/Desktop$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
zhang@ubuntu:~/Desktop$
1、go 官网下载安装包
下载之后解压到 user/local
下
$ sudo tar -zxvf ./go1.16.5.linux-amd64.tar.gz
2、配置环境变量
下载脚本:
goinstall.sh
$ sudo chmod +x goinstall.sh
$ bash goinstall.sh
// 说明:
bash 和 sh 是不同的 shell, sh 中没有 source 命令, 如果用 sh 执行会报错:source: not found
手动配置:
首先使用 ls -al 命令查看 home 目录下是否有隐藏文件 .bashrc // .profile 也可以,但是 .profile 的话要每次都source 一下, 推荐配置写入.bashrc
然后 $ vim $HOME/.bashrc
添加以下内容
$ cd /usr/local
$ vim $HOME/.bashrc
// 直接在 当前工作目录下的话需要 sudo vim $HOME/.bashrc 才可以看到内容
# go env setting
#1\ GOROOT is go install dir
export GOROOT="/usr/local/go"
#2\ add go/bin to path
export PATH=$GOROOT/bin:$PATH
#3\ GOPATH to store go code src
# in linux: default gopath is $Home/go
export GOPATH=$HOME/go
最后用 source 命令使配置生效$ source $HOME/.bashrc
环境检测 $ go version
查看 go 的环境配置 $ go env
3、第一个HelloWorld
环境变量配置的 GOPATH 路径[ 即go项目的源码存放路径 ] 下有 3 个子目录
- src
- 里面的每一个子目录, 都是一个包 ,包内就是 Go 的源码文件 xxx.go
- pkg
- 编译后生成的 包的目标文件
- bin
- 生成的可执行文件
在 $HOME/go 目录下 (没有的话手动创建)
新建 src/hello 文件夹
zhang@ubuntu:~$ mkdir -p ./go/src/hello
zhang@ubuntu:~$ cd go/src/hello/
zhang@ubuntu:~/go/src/hello$ vim helloworld.go
// 写入以下内容
package main
import "fmt"
func main(){
fmt.Println("Hello World by golang")
}
执行 go 程序
- 1、直接使用 go run //ex: go run helloworld.go
- 2、使用 go build
- go build 生成 对应包的 可执行文件 hello 之后 ./hello 执行 ```bash zhang@ubuntu:~/go/src/hello$ go run helloworld.go Hello World by go zhang@ubuntu:~/go/src/hello$ go build zhang@ubuntu:~/go/src/hello$ ls hello helloworld.go zhang@ubuntu:~/go/src/hello$ ./hello Hello World by go zhang@ubuntu:~/go/src/hello$
zhang@ubuntu:~/go/src/hello$ go build -o 1 zhang@ubuntu:~/go/src/hello$ ls 1 hello helloworld.go
- go build -o 指定名称
📣 说明:<br />编译生成 go 程序时, go 实际上会去两个地方找对应的 程序包
- 1、GOROOT 下的 src/ 文件夹下
- 2、GOPATH 下的 src/ 文件夹下
在程序包中, 自动寻找 main 包里的 main() 函数作为程序入口, 然后进行编译
<a name="rTNYG"></a>
### 4、go项目结构和基本命令
在工程经过 `go build` 、` go install`、 `go get` 等指令后<br />会将:
- 下载的 第三方的源码放在 ` $GOPATH/src/`
- 产生的二进制可执行文件 `$GOPATH/bin/`
- 生成的中间缓存文件放置 `$GOPATH/pkg/`
使用 Git 进行版本控制时, 只需添加 `src/` 下的源代码即可<br />`bin` 和 `pkg` 目录的内容无需版本控制
一般情况下普遍的代码组织目录:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12940199/1624019005116-95954cec-d17b-49c8-b95f-4b4c24ba1a1e.png#clientId=u64d2014c-f8a8-4&from=paste&id=u32de0ca7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=358&originWidth=593&originalType=url&ratio=2&size=94861&status=done&style=none&taskId=u5216db69-75ce-423c-b200-66be26b6e0f)
↪️说明:go 除了通过源码形式,_ 还可以通过包来组织文件_
- 可以引用别人的包也可以发布自己的包
- 为了防止 不同包的 项目名冲突问题
- 通常使用**顶级域名****来作为包名的前缀**,这样就不担心项目名冲突的问题。
下载包<br />`go get 包的完整路径`<br />demo:<br />`$ go get github.com/userName/projectName` // 从 Github 上下载别人的包
- 这个包 下载之后保存在 本地的 GOPATH/src/github.com/userName/projectName/ 下
<a name="zrJUE"></a>
### 5、开发工具
<a name="nxD0J"></a>
#### 5.1、vscode
<a name="qB5Z8"></a>
####
<a name="rUWOQ"></a>
#### 5.2、goland
下载 goland:<br />[[goland-linux]](https://www.jetbrains.com/go/download/#section=linux)<br />下载之后解压到 `/usr/local/` 目录下
```bash
zhang@ubuntu:~/Downloads$ ls
goland-2021.1.3.tar.gz
zhang@ubuntu:~/Downloads$ sudo tar zxvf goland-2021.1.3.tar.gz -C /usr/local/
// -C 指定解压缩的 路径
// 进入解压缩之后的 bin/ 执行 ./goland.sh 启动 goland 集成开发环境
zhang@ubuntu:~/Downloads$ cd /usr/local/
zhang@ubuntu:/usr/local$ ls
bin games go1.16.5.linux-amd64.tar.gz include man share
etc go GoLand-2021.1.3 lib sbin src
zhang@ubuntu:/usr/local$ cd GoLand-2021.1.3/bin/
zhang@ubuntu:/usr/local/GoLand-2021.1.3/bin$ sh goland.sh
激活:
选中 Activation code
激活码网址:
http://vrg123.com/
或者直接复制以下粘贴 ( Jetbrains 家软件都可用) 注意 全选
POGHJ8TBM6-eyJsaWNlbnNlSWQiOiJQT0dISjhUQk02IiwibGljZW5zZWVOYW1lIjoi5rC45LmF5YWN6LS577yaIGxvb2tkaXbjgIJjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTQyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTRiIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUkQiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTMCIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1YiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTVSIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRFAiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUERCIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBXUyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU0kiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUENXTVAiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBTIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBHTyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQUEMiLCJwYWlkVXBUbyI6IjIwMjEtMDYtMzAiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFJCIiwicGFpZFVwVG8iOiIyMDIxLTA2LTMwIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBTVyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJSUyIsInBhaWRVcFRvIjoiMjAyMS0wNi0zMCIsImV4dGVuZGVkIjp0cnVlfV0sIm1ldGFkYXRhIjoiMDEyMDIxMDYwMVBQQU0wMDAwMDUiLCJoYXNoIjoiMjQ1NjQ1NjkvMDo4MDYwNDc5MzciLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-QXPdsfDOGxuxjkt5e/mTKn4CToTurtI+e4UR87Hl4UJcDO2HBMR8SxRcWu2aEv0u/DXhRUMlaOL7HGulOlnEjGozfEp8lZtIX+/fdAe6/OUWmkVZ1xOAsm6jVZSQt6RyzFEB4RjctUEvmxwh+OV8JlsoAdgBmA1LH8gKl3ZO3qBErgB08733ap958al3eASKkSFpQggZGqGNGKlNZjkPp7QUz/dNNGnPsudjPFo7KB0i4hhDxqJBTxn9jdS0zp5mN7lfzeJJiYgljzJiZT62CPDTAZjOTjk4bZQFVymIvkeN5Ukr39IqJfskZDnsFbolpseqpF4lFTcmYqSIOd3mOg==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/wi9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD
注册成功 ~~
选中 code with me
点击 continue
[ 配置 goland 快捷方式 ]
- 1、软件自动
- Goland 界面 Tools/Create Desktop Entry // 建立的快捷方式在 desktop 桌面
- 2、手动配置
通常: ubuntu 的软件的快捷方式都 保存在 /usr/share/applicaitons/ 目录下
icon 是 goland 的快捷方式png图标,一般都在解压缩包下的 bin/ 目录
exec 是指定启动的文件
新建 goland.desktop 文件 —-> 编辑内容 —-> 赋予权限 —-> 移动到 /usr/share/applicaitons/
zhang@ubuntu:~$ vim goland.desktop
// 编辑以下内容
[Desktop Entry]
Version=1.0
Name=GoLand
Encoding=UTF-8
Type=Application
Exec=/usr/local/GoLand-2021.1.3/bin/goland.sh
Icon=/usr/local/GoLand-2021.1.3/bin/goland.png
Categories=Application;Development;Java;IDE
Terminal=false
StartupNotify=true
Comment=The Drive to Develop
// 注意路径, 下载的 goland 版本不同路径也不相同,我的是 GoLand-2021.1.3
zhang@ubuntu:~$ sudo cp goland.desktop /usr/share/applications/
zhang@ubuntu:~$ sudo chmod 777 /usr/share/applications/goland.desktop
[ goland 常用快捷键 ]
- 代码运行:
ctrl + shift + f10
- 格式化代码:
ctrl + alt + l
- 查找文本:
ctrl + f
- 替换文本:
ctrl + r
- 快速定位到某一位置(行 列):
ctrl + g
- 将所选内容进行大小写转换:
ctrl + shift + u
[ goland 新建项目 ]
5.3、vim
vim 开发 —> 马云看了落泪
6、一个神奇的错误
运行第一个 go 程序就出错, 而且相关的环境配置都没有问题
zhang@ubuntu:~/go/src/hello$ go run helloworld.go
import cycle not allowed
package main
imports fmt
imports errors
imports internal/reflectlite
imports internal/unsafeheader
imports runtime
imports internal/cpu
imports runtime
原因分析:
可能是 本地有多个版本的 go , 有可能官网下载配置之后 又通过 wget 安装了一次
7、包管理
go 的包管理方式有两种
- 1、传统的
GOPATH
模式 - 2、流行的
GOMOD