目錄
Hello World" >Hello World
运行一个程序" >运行一个程序
1. go install" >1. go install
2. go build" >2. go build
3. go run" >3. go run
4. Go Playground" >4. Go Playground
对 Hello World 程序的简短解析" >对 Hello World 程序的简短解析
首頁 後端開發 Golang 《Go語言教學系列》Hello World

《Go語言教學系列》Hello World

Jul 24, 2023 pm 05:22 PM
go語言

#這是《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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go的爬蟲Colly中Queue線程的問題是什麼? Go的爬蟲Colly中Queue線程的問題是什麼? Apr 02, 2025 pm 02:09 PM

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中用於浮點數運算的庫有哪些? Go語言中用於浮點數運算的庫有哪些? Apr 02, 2025 pm 02:06 PM

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? 在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? Apr 02, 2025 pm 02:03 PM

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? 在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? Apr 02, 2025 pm 04:54 PM

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦? GoLand中自定義結構體標籤不顯示怎麼辦? Apr 02, 2025 pm 05:09 PM

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Apr 02, 2025 pm 12:57 PM

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...

Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Apr 02, 2025 pm 04:12 PM

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

在Go編程中,如何正確管理Mysql和Redis的連接與釋放資源? 在Go編程中,如何正確管理Mysql和Redis的連接與釋放資源? Apr 02, 2025 pm 05:03 PM

Go編程中的資源管理:Mysql和Redis的連接與釋放在學習Go編程過程中,如何正確管理資源,特別是與數據庫和緩存�...

See all articles