下载

Golang 下载:下载地址

配置环境变量

  • GOROOT: GO 的安装根路径,当安装好 golang 之后默认就给配置好了,默认应该是在C:\Program Files\Go。可以将 GOROOT 理解为 JAVA_HOME
  • GOPATH:项目的工作路径,从 Go 1.8 版本开始,Go 开发包在安装完成后,将 GOPATH 赋予了一个默认的目录: $HOME/go,但如果需要,可以为所有项目设置其他位置。
  • Path:添加 GO 的/bin 路径,%GOROOT%\bin

目录结构

一个 Go 语言项目的工作目录一般包含以下三个子目录:

  • src 目录:放置项目和库的源文件
  • pkg 目录:包含可用库的已编译版本。 编译器可以链接这些库,而无需重新编译它们。
  • bin 目录:放置编译后生成的可执行文件

第一个 Go 程序

我在src目录下创建的目录格式:src\go_code\day01\main\hello.go

1
2
3
4
5
6
7
8
9
10
11
12
13
// 声明 main 包,表明当前是一个可执行程序
package main

// 引入包名为fmt的包
import "fmt"

// func 语句是用于声明函数的保留字
// main函数,是程序执行的入口
func main() {

// 在终端打印 Hello World!
fmt.Println("Hello World!")
}

编译并执行应用程序:在src\go_code\day01\main目录下执行:go run hello.go

编译程序:在src\go_code\day01\main目录下执行:go build hello.go

区别

go build 命令编译程序,如果没有错误,它将生成可在不使用 Go 的情况下运行的二进制可执行文件。 通常使用此命令生成应用程序二进制文件,用于将应用程序部署到不同的环境。

go run 命令编译并执行应用程序,而不生成二进制文件。

编译得到的可执行文件会保存在执行编译命令的当前目录下

问题解决

如果直接执行go build会报错,cannot find main module; see 'go help modules'

go 默认管理依赖的方式:go module 模式,即依赖一个 go.mod 文件,其中描述了项目依赖的包和版本(类似于 maven 的 pom.xml)

解决,初始化一个模块

我们还可以使用-o 参数来指定编译后可执行文件的名字。

1
$ go build -o hello

go 使用一个环境变量GO111MODULE来决定使用Go Modules还是GOPATH,该变量有三个值

可以通过 go env查看go env -w设置

1
$ go env -w GO111MODULE=auto
含义
GO111MODULE = on不管在 GOPATH 中还是外,都强制使用 go.mod
GO111MODULE = off强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外
GO111MODULE = auto当有 go.mod 或者在 GOPATH 之外,GO111MODULE = on
当处于 GOPATH 内且没有 go.mod 文件时,GO111MODULE = off

所以,也可以设置GO111MODULE = auto,此时再次执行go build,可以正常使用了