搜索
首页后端开发Golang《Go语言教程系列》Hello World

这是《Golang 教程系列》的第二篇。如果还没有,你可能需要先看一下我们的上一篇教程 Golang 介绍和环境安装 以了解一下 Golang 是什么以及如何下载 Golang。

这篇教程是基于 Go 1.16 以上的版本。

学习编程语言没有比让自己满手沾满代码的血 ? 更有效的方法了。让我们一起开始第一个 Go 程序吧。(First Blood)

设置开发环境

让我们先创建一个编写 hello world 程序的文件夹。请打开命令行然后运行下面的命令:

mkdir ~/Desktop/learngo/

上面的命令将会在用户桌面创建一个名为 learngo 的文件夹(译者开发环境为 Macbook Pro)。你可以在任意位置创建目录编写代码。

Hello World

使用你喜爱的文本编辑器在 learngo 文件夹中创建一个名为 main.go 的文件并写入以下内容:

package main

import "fmt"

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

在 Go 中将包含 main 函数的文件命名为 main.go 是约定俗称的,但是其他名称也是可以使用。

运行一个程序

有几种不同的方式来运行 Go 程序。让我们一一看一下。

1. go install

第一个运行 Go 程序的方法是使用 go install 命令。让我们来使用 cd 命令进入刚创建的 learngo 目录

cd ~/Desktop/learngo/

接着运行下面的命令。

go install

上面的命令将编译当前程序并将其安装(拷贝)二进制可执行文件到 ~/go/bin 目录。二进制可执行文件的名字是包含 main.go 文件的文件夹名。在我们示例中,它将被命名为 learngo

当你尝试安装程序时,你可能会遇到以下错误。

go: cannot find main module; see 'go help modules'

上面的错误实际上意味着,go install 无法找到 main 模块,这是因为我们没有初始化 go modules,我们使用以下命令初始化模块:

go mod init github.com/youngjuning/learngo

上面的命令会在 learngo 目录下创建一个 go.mod 文件,该文件是程序模块定义的地方,作用类似于 Node 的 package.json 文件。然后我再执行 go install 便可以成功。

你可以在命令行输入 ls -al ~/go/bin/learngo,然后你会发现 go install 实际上是把二进制可执行文件放在了 ~/go/bin 中。

现在让我们运行编译后的二进制可执行文件。

~/go/bin/learngo

上面的命令将运行 learngo 并打印出以下内容:

Hello World

恭喜你!你已经成功地运行了你的第一个 Go 程序。

如果你不想每次都输入完整的 ~/go/bin/learngo 路径来运行程序,你可以添加 ~/go/bin/ 到你的 PATH 中。

export GOPATH=~/.go
export PATH=${PATH}:$GOPATH/bin

现在你可以在命令行中只输入 learngo 来运行程序。

你可能想知道,当 learngo 目录包含多个 Go 文件而不只是只有 main.go 时会发生什么。在这种情况下,go install 将如何工作?请继续往下看,我们将在了解软件包和 Go 模块时讨论这些内容。

2. go build

运行程序的第二个选项是使用 go buildgo buildgo install 非常相似,不同之处在于它不会将编译的二进制文件安装(拷贝)到路径 ~/go/bin/,而是在 go build 所在的文件夹下创建二进制文件:

在命令行输入以下命令来切换当前目录到 learngo

cd ~/Desktop/learngo/

然后输入下面的命令:

go build

上面的命令将会在当前目录下创建一个名为 learngo 的二进制可执行文件。ls -al 命令可以证实名为 learngo 的文件被创建了。

输入 ./learngo 来运行程序,将会输入和前面一样的内容:

Hello World

到此,我们用 go build 也成功地运行了我们的第一个 Go 程序 ?

3. go run

第三个运行程序的方法是使用 go run 命令。

在命令行输入 cd ~/Desktop/learngo 命令来改变当前目录为 learngo

然后输入以下命令。

go run main.go

输入以上命令后,我们也可以看到一样的输出:

Hello World

go run 命令和 go buildgo install 命令之间的一个细微差别是,go run 要求使用 .go 文件的名称作为参数。

在引擎盖下,go run 的工作原理与 go build 非常相似。无需将程序编译并安装到当前目录,而是将文件编译到一个临时位置并从该位置运行文件。如果你想知道 go run 将文件编译到的位置,请使用 --work 参数运行 go run

go run --work main.go

在我的场景中,运行以上命令会输出下面的内容:

WORK=/var/folders/mf/_fk8g5jn23gcw970pypqlv4m0000gn/T/go-build3519209434
Hello World

WORK 的值表示程序将被编译到的一个临时位置。

就我的场景而言,程序被编译到 /var/folders/mf/_fk8g5jn23gcw970pypqlv4m0000gn/T/go-build3519209434 。这可能因你的情况而异 ?

4. Go Playground

运行程序的最后一种方法是使用 go playground。尽管此方法有一些限制,但由于我们可以使用浏览器并且不需要在本地本地安装 Go:我已经为 Hello World 程序创建了一个 playground。点击此处 以在线运行该程序。

你还可以使用 Go Playground 与他人分享你的源代码。

既然我们知道 4 种不同的方式来运行程序,那么你可能会很困惑该使用哪种方法。答案是,当我想快速检查逻辑或找出标准库函数如何工作时,通常使用 playground。在大多数其他情况下,我更喜欢 go install,因为它为我提供了从终端中任何目录运行程序的选项,因为它将所有程序编译到标准的 ~/go/bin/ 路径。

对 Hello World 程序的简短解析

这是我们刚刚创建的简单的 hello world 程序:

package main

import "fmt"

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

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

「package main」 - 每个 go 文件都必须以 package name 开始。Packages 用于提供代码分隔和可重用性。此处使用包名称 main。主要功能应始终保留在 main package 中。

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

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

「fmt.Println("Hello World")」 - fmt 软件包的 PrintIn 函数用于将文本写入标准输出。package.function() 是在包中调用函数的语法。

以上是《Go语言教程系列》Hello World的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:Go语言进阶学习。如有侵权,请联系admin@php.cn删除
Golang的影响:速度,效率和简单性Golang的影响:速度,效率和简单性Apr 14, 2025 am 12:11 AM

GoimpactsdevelopmentPositationalityThroughSpeed,效率和模拟性。1)速度:gocompilesquicklyandrunseff,ifealforlargeprojects.2)效率:效率:ITScomprehenSevestAndArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增强开发的简单性:3)SimpleflovelmentIcties:3)简单性。

C和Golang:表演至关重要时C和Golang:表演至关重要时Apr 13, 2025 am 12:11 AM

C 更适合需要直接控制硬件资源和高性能优化的场景,而Golang更适合需要快速开发和高并发处理的场景。1.C 的优势在于其接近硬件的特性和高度的优化能力,适合游戏开发等高性能需求。2.Golang的优势在于其简洁的语法和天然的并发支持,适合高并发服务开发。

Golang行动:现实世界中的示例和应用程序Golang行动:现实世界中的示例和应用程序Apr 12, 2025 am 12:11 AM

Golang在实际应用中表现出色,以简洁、高效和并发性着称。 1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Golang:Go编程语言解释了Golang:Go编程语言解释了Apr 10, 2025 am 11:18 AM

Go语言的核心特性包括垃圾回收、静态链接和并发支持。1.Go语言的并发模型通过goroutine和channel实现高效并发编程。2.接口和多态性通过实现接口方法,使得不同类型可以统一处理。3.基本用法展示了函数定义和调用的高效性。4.高级用法中,切片提供了动态调整大小的强大功能。5.常见错误如竞态条件可以通过gotest-race检测并解决。6.性能优化通过sync.Pool重用对象,减少垃圾回收压力。

Golang的目的:建立高效且可扩展的系统Golang的目的:建立高效且可扩展的系统Apr 09, 2025 pm 05:17 PM

Go语言在构建高效且可扩展的系统中表现出色,其优势包括:1.高性能:编译成机器码,运行速度快;2.并发编程:通过goroutines和channels简化多任务处理;3.简洁性:语法简洁,降低学习和维护成本;4.跨平台:支持跨平台编译,方便部署。

SQL排序中ORDER BY语句结果为何有时看似随机?SQL排序中ORDER BY语句结果为何有时看似随机?Apr 02, 2025 pm 05:24 PM

关于SQL查询结果排序的疑惑学习SQL的过程中,常常会遇到一些令人困惑的问题。最近,笔者在阅读《MICK-SQL基础�...

技术栈收敛是否仅仅是技术栈选型的过程?技术栈收敛是否仅仅是技术栈选型的过程?Apr 02, 2025 pm 05:21 PM

技术栈收敛与技术选型的关系在软件开发中,技术栈的选择和管理是一个非常关键的问题。最近,有读者提出了...

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)