go系列二:hello world

Golang
392
0
0
2022-10-20
标签   Golang基础

学习任何语言的写下的第一行代码应该都是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

在项目根目录运行:

  1. vi main.go
  2. 将下面的内容拷贝到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 buildGo 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 rungo 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 Demo

使用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进行下载
  • 下一节我们将学习变量