学习任何语言的写下的第一行代码应该都是hello word吧,Go也不例外。
创建代码目录
mkdir -p ~/Documents/go/learngo
我们所有的代码将会放在Documents/go/learngo
目录下。
Create Go Module
Go模块用于跟踪应用程序的依赖关系及其版本。
这将创建一个名为go.mod
的文件。
生成的内容如下:
module learngo
go 1.18
第一行模块learngo指定了模块名。
第二一行是1.18,表示该模块中的文件使用的是1.18版本
当我们学习包时,我们将更详细地讨论 — Go模块
hello world
在项目根目录运行:
- vi main.go
- 将下面的内容拷贝到
main.go
文件中
package main
import "fmt"
func main() {
fmt.Println("Hello World ")
}
Run Go
如果想运行Go程序有下面几种方法:
go install
$ cd ~/Documents/go/learngo
$ go install
上面的命令将编译程序并将二进制文件安装(复制)到~/go/bin
位置。二进制文件的名称将是包含main.go
的文件夹。在我们的例子中,它将被命名为learngo
但是当我们运行时,可能会报错:
go install: no install location for directory /Users/longzhang/Documents/go/learngo outside GOPATH
For more details see: 'go help gopath'
如果遇到这个问题意味着:
我们需要设置一个GOBIN
环境变量来使Go
了解,将二进制文件安装到哪里。
export GOBIN=~/go/bin/
上面的命令指定go install
应该将编译后的二进制文件复制到路径~/go/bin/
, 这是Go
二进制程序的常规位置。
但也可可以随意将其更改为任何位置。
再次运行go install
,程序应该编译和运行没有任何问题。
在终端输入ls -al ~/go/bin/learngo
,你会发现go install
已经把二进制文件放在了路径~/go/bin
中了。
下面,我们运行一下编译后的二进制文件。
$ ~/go/bin/learngo
$ Hello World
到这里我们已经运行了一个Go程序了。
但是这里有个问题,我们需要把~/go/bin
添加到环境变量中。
运行
export PATH=$PATH:~/go/bin
go build
Go build
与Go install
非常相似,不同的是它不会将编译好的二进制文件安装(复制)到路径~/ Go /bin/
,而是在运行Go build
的位置创建二进制文件。
$ cd ~/Documents/go/learngo
$ go build
$ ls
go.mod learngo main.go
你会发现在当前目录多个一个名为learngo
的二进制文件。
$ ./learngo
Hello World
go run
$ cd ~/Documents/go/learngo
$ go run main.go
Hello World
go run
和go build
/go install
命令之间的一个细微区别是,go run
需要.go
文件的名称作为参数。
实际上,go run
的工作原理与go build
非常相似。它不是将程序编译并安装到当前目录,而是将文件编译到一个临时位置
,并从该位置运行该文件。如果您想知道go run
编译文件的位置,请使用——work
参数运行go run
$ go run --work main.go
运行上面的命令会输出:
WORK=/var/folders/gs/d1qtmvz10dg5vz_2p3xq07rc0000gn/T/go-build3396638469 hello world
--work
的值就是指定程序将被编译到的临时位置。
Go Playground
go playground
虽然有限制,但当我们想运行简单的程序时,这个方法很方便,因为是使用浏览器打开页面运行的,不需要在本地安装Go
。
使用Go Playground 还有一个好处是可以和他人一起共享代码。
这些大概go运行程序的方案,具体使用哪种,我们可以视情况而定。
下面我们简单说一下main.go
中的代码。
package main
import "fmt"
func main() {
fmt.Println("Hello World ")
}
package main
- 每个go文件必须以包名语句开始import "fmt"
——import语句用于导入其他包func main()
——func关键字。程序执行从main
函数开始fmt.Println("Hello World")—
—fmt包的Println函数用于将文本写入标准输出- 代码可以从github进行下载
- 下一节我们将学习变量