## 环境初始化
```shell
.
├── Readme.md
├── config // 配置文件
├── controller // CLD:服务入口,负责处理路由、参数校验、请求转发
├── service // CLD:逻辑(服务)层,负责业务逻辑处理
├── dao // CLD:负责数据与存储相关功能(mysql、redis、ES等)
│ ├── mysql
│ └── redis
├── model // 模型
├── logging // 日志处理
├── main.go // 项目启动入口
├── middleware // 中间件
├── pkg // 公共服务
├── router // 路由
```
- 推荐访问链接地址: https://golang.google.cn/dl/
> Go的版本更新迭代较快,建议下载最新版本,体验新特性。
通过`go version`查看当前安装的版本
```powershell
PS C:UsersAdministrator.DESKTOP-36OCN81DesktopGo> go version
go version go1.19.1 windows/amd64
```
### GOROOT和GOPATH
`GOROOT`和`GOPATH`都是环境变量,`GOROOT`使我们Go开发包的路径,从1.8版本开始,Go的开发包在完成安装后会给`GOPATH`社会一个默认目录,所以一般不需要我们自己设置,使用默认的即可!
### GOPROXY
1.14版本之后,都推荐使用`go mod `的模式管理依赖,也不需要强制我们把代码写在`GOPATH`下面的`src`目录下,你可以在电脑的任意位置编写go代码。
默认的`GOPROXY`地址是国外的,国内访问不到,建议更换!
```powershell
go env -w GOPROXY=https://goproxy.cn,direct
```
## 插件的选择
- Go for VS Code v0.35.2
## 一个简单的Hello world
- 新建一个`code/Day1/`的目录
新建一个`code/Day1/main.go`的文件
```go
package main // 声明 main 包,表明当前是一个可执行程序
import "fmt" // 导入内置 fmt 包
func main() { // main 函数,是程序的执行入口
fmt.Printf("Hello world!") // 打印Hello world
}
```
## 创建第一个Go程序
- 记录当前的依赖、版本信息、第三方库信息,类似于Python的`requirements.txt`
```cmd
go mod init hello // hello 是你的项目名
go run main.go // 临时目录编译执行
go build // 直接编译成二进制文件
```
### 跨平台编译
如果你是`Windows`并且使用的是`cmd`
```cmd
SET CGO_ENABLED=0 // 禁用CGO
SET GOOS=linux // 目标平台是Linux
SET GOARCH=amd64 // 目标处理器架构是amd64
go build
```
如果你是`Windows`并且使用的是`PowerShell`
```PowerShell
$ENV:CGO_ENABLED=0
$ENV:GOOS=linux
$ENV:GOARCH=amd64
```
如果你是`Linux`平台
```shell
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
```
如果你是`Mac`平台
- GOOS=Linux/darwin: Linux平台/Mac平台
```shell
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go
```