Go第一个程序: Hello World

本节重点:

  • 跑起第一个go程序
  • 了解go的编译过程

本教程适用于 Go 版本 1.18 或更高版本。

创建一个 Go 模块

本节我们将要创建一个简单的程序,然后学习如何编译和运行它。

  • 让我们创建一个目录,我们要在其中编写我们的 hello world 程序。打开终端并运行以下命令。
mkdir ~/Documents/learngo/

learngo上面的命令将在当前用户的 Documents 目录中创建一个名为learngo的目录。这里可以随意在您希望代码驻留的任何位置创建目录。

  • 创建一个 Go 模块
    Go 模块用于跟踪我们应用程序的依赖项及其版本。下一步是创建一个在文件夹中命名的 go learngo模块 ~/Documents/learngo/

~/Documents/learngo/目录中运行go mod init learngo。这将创建一个名为go.mod. 该文件的内容如下所示。

module learngo
 
go 1.18

第一行 module learngo指定模块名称。`go 1.18 表示此模块中的文件使用 go 版本 1.18

当我们了解包时,我们将更详细地讨论 Go 模块。

Hello world

-在learngo目录中新建 main.go 文件,内容如下:

package main

func main() {
  println("Hello world")
}

保存文件名为hello.go

接下来,打开一个 shell 或者终端提示符,进入到文件保存的目录内。

最后,通过敲入以下命令来运行程序:

go run hello.go

如果一切正常,你将看到屏幕输出:

Hello world
运行解析

go run命令已包含了编译运行。它会先在一个临时目录编译程序,然后执行完后清理掉。我们可以在run后面--work参数来查看临时目录

go run --work hello.go
#会打印出如下信息:
#WORK=/var/folders/kh/ldpdqcr549x9ff5vt56wq4h40000gn/T/go-build446426376

如果要明确编译代码的话,可以通过go build命令

go build hello.go

使用go build后,会在目录下生成一个名为hello的可执行文件。可通过./hello直接执行。

交叉编译

在日常工作中,线上机器一般是linux。开发机有可能是Windows,MacOs。这时我们build的代码在线上机可能就没办法运行了。go支持交叉编译, 在一个平台上生成然后再另外一个平台去执行。具体命令如下:

# 要去linux下执行 
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
# 要去Mac下执行 
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
# 要去win下执行
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
参数说明
  • CGO_ENABLED : CGO 表示golang中的工具,CGO_ENABLED 表示CGO禁用,交叉编译中不能使用CGO的
  • GOOS: 目标平台
    • mac 对应 darwin
    • linux 对应 linux
    • windows 对应 windows
  • GOARCH:目标平台的体系架构【386,amd64, arm】, 目前市面上的个人电脑一般都是amd64架构的
    • 386 也称 x86 对应 32位操作系统
    • amd64 也称 x64 对应 64位操作系统
    • arm 这种架构一般用于嵌入式开发。 比如 Android , IOS , Win mobile , TIZEN 等

Hello world程序的简要说明

这是我们刚刚编写的hello world程序

package main

func main() {
  fmt.Println("Hello world")
}

我们将简要讨论程序的每一行的作用。在接下来的教程中,我们将深入探讨程序的每个部分。

package main - 每个 go 文件都必须以package name语句开头。包用于提供代码划分和可重用性。此处使用包名 main。主要功能应始终驻留在主包中。

import "fmt" - import 语句用于导入其他包。在我们的例子中,fmt包被导入,它将在 main 函数中用于将文本打印到标准输出。

func main() -func关键字标记函数的开始。这main是一个特殊的功能。程序执行从main函数开始。{}大括号表示主函数的开始和结束。

fmt.Println("Hello World") - 该包的Println功能fmt用于将文本写入标准输出。package.Function()是调用包中函数的语法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值