【Go系列】 Go语言的入门

为什么要学习Go

从今天起,我们将一同启程探索 Go 语言的奥秘。我会用简单明了的方式,逐一讲解 Go 语言的各个知识点,帮助你从基础做起,一步步深化理解。不论你之前是否有过 Go 语言的接触经验,这个系列文章都将助你收获满满。

现在,让我以一个经典的例子"Hello World"来带你入门 Go 语言,了解它是如何运行起来的。

开始学习

Hello, 世界

若你曾学习过 C 语言,那么对下面这个经典示例应该颇为熟悉。借助这个例子,我将首先为你简要介绍 Go 语言的一些关键概念,帮助你初步把握 Go 语言代码的结构和风貌。以下是示例代码:

Go 复制代码
package main

import "fmt"

func main() {

    fmt.Println("Hello, World!")

}

这五行的代码组合便形成了一个完整的 Go 程序,你会发现它非常易于理解。接下来,我将执行这段代码,让我们观察一下运行后的输出。操作步骤是打开命令行终端,输入以下指令,并按下回车键。

Go 复制代码
$ go run main.go

Hello, World!

当我输入命令 go run main.go 并按下回车键后,屏幕上显示的"Hello, World!"便是我们的 Go 程序运行后的输出结果。

在这里,go 是 Go 语言附带的工具链中的一个命令,它与您可能熟悉的如 ls 这样的命令行工具一样,是一个可执行程序。go 命令提供了多种功能,包括运行、编译 Go 代码,以及生成可执行文件等。

rungo 命令下的一个选项,它用于指示工具链执行指定的 Go 程序。而 main.go 则是我编写的 Go 代码文件。因此,整个命令 go run main.go 的含义是,使用 Go 工具链来运行 main.go 文件中的代码。

程序结构分析

为了让一个 Go 语言程序顺利执行,关键在于包含 package mainmain 函数这两个要素。package main 指示这是一个可执行的应用程序,而 main 函数则是程序启动的入口点。

在"Hello, 世界"这个基础示例中,我们见证了 Go 语言程序的基本骨架。以下是对程序结构的逐步解析,以及 Go 语言核心概念的介绍。

首行的 package main 声明了当前文件 ch01/main.go 所属的包。在 Go 语言中,package 是声明包的关键字,而 main 是包的名称。main 包在 Go 语言中具有特殊意义,它表明你的项目是一个独立的可执行程序,而不是供其他项目引用的库。

第二行的 import "fmt" 是引入 fmt 包的声明。import 是 Go 语言的关键字,用于导入所需的包。这里我们导入了 fmt 包,以便在后续代码中使用它提供的功能。

第三行的 func main() 定义了 main 函数。func 是 Go 语言中声明函数的关键字,main 是函数名,而空括号 () 表示该函数不接受任何参数。在 Go 语言中,main 函数是程序的入口点,程序启动时首先执行的就是 main 函数,通过它来调用其他函数以实现业务逻辑。

第四行的 fmt.Println("Hello, 世界") 是调用 fmt 包中的 Println 函数来输出文本"Hello, 世界"。要使用一个包的功能,必须先将其导入。Println 函数是 fmt 包提供的一个函数,用于在控制台上打印信息。

最后一行的大括号 } 标志着 main 函数体的结束。至此,我们完成了对这段代码的分析,执行程序后便能看到"Hello, 世界"的输出。

通过上述分析,我们可以看出 Go 语言的代码结构简洁而完整,仅凭 packageimportfunc main 这些基本概念就能构建一个可运行的程序。

在后续,我们将进一步探讨如何使用变量、自定义函数等内容。在此之前,我们先来了解 Go 语言的开发环境如何搭建,这是运行上述 Go 代码并让程序运行起来的前提。

Go 语言环境搭建

要搭建 Go 语言的开发环境,首先需要下载 Go 语言的安装包。你可以访问 Go 官方网站 https://golang.org/dl/ 或者国内的镜像网站 https://golang.google.cn/dl/ 来下载(由于网络原因,如果无法访问国外官网,可以选择国内的镜像网站进行下载)。

在下载页面,根据你所使用的操作系统(无论是 Windows、macOS 还是 Linux)选择合适的安装包。以下是下载步骤的简要说明:

  1. 访问 Go 语言官方网站或国内镜像网站。
  2. 在下载页面中,找到适合你操作系统的 Go 版本。
  3. 点击相应的下载链接,下载 Go 安装包。

Windows MSI 下安装

在 Windows 系统中,MSI 安装包是一个便捷的选择,因为它提供了一个直观的安装界面,让用户能够轻松地配置 Go 语言开发环境。对于大多数现代的 Windows 操作系统,它们都是 64 位的,因此你应该下载 go1.20.windows-amd64.msi。如果你使用的是 32 位的 Windows 系统,那么你应该选择 go1.15.windows-386.msi

下载并双击安装包后,你会被引导通过一系列的安装步骤。在安装过程中,你可以选择将 Go 安装到默认的 C:\Go 目录,或者根据自己的喜好选择一个不同的目录。

一旦你选择安装到 C:\Go 目录,安装程序会自动将 C:\Go\bin 目录添加到你的系统 PATH 环境变量中。这样,你就可以在任何命令提示符中直接运行 Go 命令了。如果你发现安装程序没有添加这个路径,你也可以手动将其添加到 PATH 环境变量。

手动添加步骤如下:

  1. 打开"控制面板"。
  2. 选择"系统和安全"。
  3. 点击"系统"。
  4. 在系统属性窗口中,选择"高级"选项卡。
  5. 点击"环境变量"按钮。
  6. 在环境变量窗口中,找到并选择"Path"变量,然后点击"编辑"。
  7. 在编辑环境变量窗口中,点击"新建",然后输入 C:\Go\bin
  8. 点击"确定"保存更改。
  9. 退出所有打开的命令行窗口,然后打开一个新的命令行窗口以使更改生效。

Linux 下安装

如果要安装1.18以下的版本可以直接

Go 复制代码
sudo apt-get install golang-go

yum install golang-go

第一行为Ubuntu的下载,第二行为Redhat的下载方式。

如果要通过安装包安装的话,由于Linux 系统有 32 位和 64 位,你可以根据你的 Linux 操作系统选择相应的压缩包,它们分别是 go1.20.linux-386.tar.gz 和 go1.20.linux-amd64.tar.gz。

下载成功后,需要先进行解压,假设你下载的是 go1.20.linux-amd64.tar.gz,在终端通过如下命令即可解压:

Go 复制代码
sudo tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz

然后把 /usr/local/go/bin 添加到 PATH 环境变量中,就可以使用 Go 语言开发工具包了。

把下面这段添加到 /etc/profile 或者 $HOME/.profile 文件中,保存后退出即可成功添加环境变量。

export PATH=$PATH:/usr/local/go/bin

macOS 下安装

如果你的操作系统是 macOS,可以采用 PKG 安装包。下载 go1.20.darwin-amd64.pkg 后,双击按照提示安装即可。安装成功后,路径 /usr/local/go/bin 应该已经被添加到了 PATH 环境变量中,如果没有的话,你可以手动添加,和上面 Linux 的方式一样,把如下内容添加到 /etc/profile 或者 $HOME/.profile 文件保存即可。

export PATH=$PATH:/usr/local/go/bin
安装测试

安装成功后,可以打开终端或者命令提示符,输入 go version 来验证 Go 语言是否安装成功。如果成功的话,会打印出 Go 语言的版本和系统信息,如下所示:

Go 复制代码
$ go version

go version go1.20 darwin/amd64

环境变量设置

在安装了 Go 语言开发工具包之后,虽然你已经拥有了编译和运行 Go 程序的基本能力,但还有一些重要的环境变量需要设置,以确保 Go 开发环境完整。这两个关键的环境变量是 GOPATHGOBIN

  • GOPATH :这是 Go 项目的工作目录,它在 Go Module 之前是非常重要的,现在主要用于存放使用 go get 命令获取的项目。
  • GOBIN :这是 Go 编译生成的程序的安装目录。当你使用 go install 命令时,编译后的 Go 程序会被安装到 GOBIN 目录中,这样你就可以在命令行中直接使用这些程序。

假设你的工作目录是 /Users/ubuntu/go,你需要将 GOPATH 环境变量设置为 /Users/ubuntu/go,并将 GOBIN 环境变量设置为 $GOPATH/bin

在 Linux 和 macOS 系统下,你可以将以下内容添加到 /etc/profile 或者你的用户目录下的 .profile 文件中,以设置这些环境变量:

Go 复制代码
export GOPATH=/Users/ubuntu/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

如果在 Windows 系统中,可以通过控制面板 -> 高级 -> 环境变量选项添加这两个环境变量。

项目结构

在 Go 语言的现代项目中,Go Module 是一个推荐的管理依赖和构建项目的工具。它允许你在项目的任何位置创建一个 Go 语言项目,而不需要依赖于全局的 GOPATH 环境变量。

假设你的项目位置是 /Users/ubuntu/goProject/,打开终端,输入如下命令切换到该目录下:

Go 复制代码
$ cd /Users/ubuntu/goProject/

可以执行如下命令创建一个 Go Module 项目, 会生成一个go.mod文件:

$ go mod init

然后在当前目录下创建一个 main.go 文件,这样整个项目目录结构是:

Go 复制代码
goProject

├── go.mod

├── lib

└── main.go

其中 main.go 是整个项目的入口文件,里面有 main 函数。lib 目录是项目的子模块,根据项目需求可以新建很多个目录作为子模块,也可以继续嵌套为子模块的子模块。

编译发布

完成了你的 Go 项目后,你可以选择将代码编译成一个可执行文件,以便在终端中直接运行,或者将其发布到 $GOBIN 目录,以便在系统环境中直接使用。

Go 复制代码
$ go build main.go

回车执行后会在当前目录生成 main 可执行文件,现在,我们来测试下它是否可用。

Go 复制代码
$ ./main 

Hello, World!

如果成功打印出"Hello, World!",证明程序成功生成。

把它安装到 $GOBIN 目录或者任意位置:

Go 复制代码
$ go install main.go

跨平台编译

在 Go 语言开发工具包中,一个令人印象深刻的功能就是它的跨平台编译能力。这意味着你可以在一个操作系统上开发代码,然后编译出可以在其他操作系统上运行的可执行程序。例如,如果你在 macOS 上开发,你可以编译出能在 Linux 或 Windows 上运行的程序。

跨平台编译允许你选择你最喜欢的操作系统作为开发环境,然后轻松地将代码编译成适合发布平台的可执行程序。

Go 语言通过两个环境变量来控制跨平台编译:

  • GOOS :代表要编译的目标操作系统。常见的值有 linuxwindowsdarwin 等。
  • GOARCH :代表要编译的目标处理器架构。常见的值有 386amd64arm64 等。

通过组合不同的 GOOSGOARCH 值,你可以编译出适用于不同平台的可执行程序。例如,如果你在 macOS 上开发,且你的系统是 AMD64 架构,你可以这样编译出一个适用于 Linux AMD64 架构的可执行程序:

Go 复制代码
$ GOOS=linux GOARCH=amd64 go build main.go

在这个命令中:

  • GOOS=linux:告诉 Go 编译器目标操作系统是 Linux。
  • GOARCH=amd64:告诉 Go 编译器目标处理器架构是 AMD64。
  • go build -o linux-amd64-hello-world .:编译当前目录下的 Go 源文件,并将输出命名为 linux-amd64-hello-world

完成编译后,你将得到一个名为 linux-amd64-hello-world 的可执行文件,它可以在 Linux AMD64 架构的系统上运行。这样,你就可以选择在 macOS 上开发,然后编译出适用于其他平台的可执行程序,以便在不同环境中运行你的 Go 程序。

Go 编辑器推荐

在软件开发领域,选择一款合适的编辑器对于提高工作效率至关重要。今天,我想向大家推荐两款备受开发者喜爱的编辑器,它们分别是 Visual Studio Code 和 JetBrains 的 Goland。

Visual Studio Code 这款编辑器是一款由微软开发的免费开源代码编辑器,拥有丰富的插件和扩展功能。对于 Go 语言开发,Visual Studio Code 提供了专门的 Go 扩展插件,它可以帮助你更高效地编写、调试和测试 Go 代码。你可以在 Visual Studio Code 的官方网站 Visual Studio Code - Code Editing. Redefined 下载这款编辑器,并安装 Go 扩展插件来开始你的 Go 开发之旅。

Goland是一款由老牌 IDE 厂商 JetBrains 推出的 Go 语言集成开发环境。它不仅集成了所有必要的 Go 插件,还提供了一系列强大的功能,如代码补全、代码格式化、代码重构、代码导航等。Goland 适合所有水平的开发者,无论是初学者还是经验丰富的老手,都能在 Goland 中找到适合自己的开发体验。你可以在 Goland 的官方网站 GoLand by JetBrains: More than just a Go IDE 下载并安装 Goland,开始使用这款功能强大的 Go 开发工具。

选择哪款编辑器取决于你的个人偏好和需求。如果你喜欢轻量级的编辑器并且需要丰富的插件支持,Visual Studio Code 是一个不错的选择。而如果你更倾向于使用集成度更高、功能更全面的 IDE,Goland 可能会更符合你的需求。无论你选择哪款编辑器,它们都能帮助你更高效地开发 Go 语言应用程序。

相关推荐
大G哥2 分钟前
java提高正则处理效率
java·开发语言
VBA633712 分钟前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~14 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳23 分钟前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it24 分钟前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师1 小时前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
就爱学编程1 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
Oneforlove_twoforjob2 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
emoji1111112 小时前
前端对页面数据进行缓存
开发语言·前端·javascript