当前位置: 首页 > news >正文

Go基础:Go语言详细介绍,环境搭建,及第一个程序详解

文章目录

    • 一、Go语言详细介绍
      • 1.1 诞生背景
      • 1.2 定义与特点
      • 1.3 应用领域
    • 二、Go语言环境搭建
      • 2.1 安装Go编译器
      • 2.2 Windows MSI 下安装
      • 2.3 Linux 下安装
      • 2.4 macOS 下安装
      • 2.5 安装测试
      • 2.6 环境变量设置
    • 三、第一个Go程序详解
      • 3.1 编写第一个程序
      • 3.2 程序详细解析
      • 3.3 编译发布
      • 3.4 跨平台编译
      • 3.5 Go 编辑器推荐

一、Go语言详细介绍

1.1 诞生背景

Go语言,也被称为Golang,是由Google的三位资深工程师——罗伯特·格里斯莫(Robert Griesemer)、罗布·派克(Rob Pike)和肯·汤普森(Ken Thompson)于2007年开始设计,并于2009年正式开源发布的一种编程语言。

Go语言的诞生是为了满足现代软件开发的需求,特别是在并发编程和系统编程方面,追求高效性、简洁性和性能。其主要原因包括以下几点:

  1. 解决传统语言的不足:当时主流的编程语言如C++和Java,在处理大规模并发任务时显得复杂且低效。Go语言的设计初衷之一就是简化并发编程,通过引入goroutine和channel等机制,使并发操作更加直观和高效。
  2. 提高开发效率:Go语言注重简洁性和易用性,力求在语言层面减少开发者的负担。例如,其语法简洁、编译速度快,同时支持垃圾回收,从而显著提升开发效率。
  3. 适应现代硬件发展:随着多核处理器的普及,如何充分利用硬件性能成为软件开发的重要挑战。Go语言通过内置的并发支持,使开发者能够更轻松地编写高效的多线程程序。

1.2 定义与特点

其核心特点包括:

  • 并发性:通过goroutine和通道(channel)实现轻量级并发,支持高并发场景。
  • 类型安全:静态类型语言,防止类型不匹配错误,提高代码可靠性。
  • 跨平台:支持Windows、Linux、macOS等多种操作系统。
  • 内存管理:内置垃圾回收机制,减少内存泄漏风险。
  • 高效编译:编译速度快,生成高效的机器码。
  • 高性能:Go语言编译为机器码,运行效率接近C语言,同时具备动态语言的开发速度。

1.3 应用领域

Go语言因其高并发性和高效性,被广泛应用于以下领域:

  • 后端服务:高性能网络服务器、数据库应用程序等。
  • 分布式系统:微服务架构、消息传递系统、Kubernetes等。
  • 云计算:云服务开发、容器技术等。
  • 网络编程:Web服务器、代理、负载均衡等。

二、Go语言环境搭建

在使用Go语言进行开发前,需要完成以下环境搭建步骤:

2.1 安装Go编译器

1、下载安装包:从Go语言官网(https://golang.org/dl/)下载适合操作系统的安装包。如果下载不了可以从国内的官网:https://golang.google.cn/dl/ 进行下载。

下载时可以根据自己的操作系统选择相应的开发包,比如 Window、MacOS 或是 Linux 等,如下图所示:
在这里插入图片描述

2.2 Windows MSI 下安装

MSI 安装的方式比较简单,在 Windows 系统上推荐使用这种方式。现在的操作系统基本上都是 64 位的,所以选择 64 位的 go1.25.1.windows-amd64.msi 下载即可,如果操作系统是 32 位的,选择 go1.25.1.windows-386.msi 进行下载。

下载后双击该 MSI 安装文件,按照提示一步步地安装即可。在默认情况下,Go 语言开发工具包会被安装到 c:\Go 目录,你也可以在安装过程中选择自己想要安装的目录。

假设安装到 c:\Go 目录,安装程序会自动把 c:\Go\bin 添加到你的 PATH 环境变量中,如果没有的话,你可以通过系统 -> 控制面板 -> 高级 -> 环境变量选项来手动添加。

2.3 Linux 下安装

可以根据你的 Linux 操作系统选择相应的压缩包 go1.25.1.linux-amd64.tar.gz。下载成功后,需要先进行解压,在终端通过如下命令即可解压:

sudo tar -C /usr/local -xzf go1.25.1.linux-amd64.tar.gz

输入后回车,然后输入你的电脑密码,即可解压到 /usr/local 目录,然后把 /usr/local/go/bin 添加到 PATH 环境变量中,就可以使用 Go 语言开发工具包了。

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

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

2.4 macOS 下安装

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

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

2.5 安装测试

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

$ go version
go version go1.25.1 darwin/arm64

2.6 环境变量设置

Go 语言开发工具包安装好之后,它的开发环境还没有完全搭建完成,因为还有两个重要的环境变量没有设置,它们分别是 GOPATH 和 GOBIN。

  • GOPATH:代表 Go 语言项目的工作目录,在 Go Module 模式之前非常重要,现在基本上用来存放使用 go get 命令获取的项目。
  • GOBIN:代表 Go 编译生成的程序的可执行文件目录,比如通过 go install 命令,会把生成的 Go 程序安装到 GOBIN 目录下,以供你在终端使用。

假设工作目录为 /Users/data/go,你需要把 GOPATH 环境变量设置为 /Users/data/go,把 GOBIN 环境变量设置为 $GOPATH/bin。

在 Linux 和 macOS 下,把以下内容添加到 /etc/profile 或者 $HOME/.profile 文件保存即可。然后运行source /etc/profile使配置生效。

export GOPATH=/Users/data/go
export GOBIN=$GOPATH/bin

三、第一个Go程序详解

3.1 编写第一个程序

以下是一个经典的“Hello, World!”程序,展示了Go语言的基本语法:(文件命名为:main.go

package main
import "fmt"
func main() {fmt.Println("Hello, 世界!")
}

这五行代码就构成了一个完整的 Go 程序,是不是非常简单?现在我运行这段代码,看看输出的结果,方法是打开终端输入以下命令,然后回车。

$ go run main.go
Hello, 世界!

3.2 程序详细解析

  • package main:声明该文件属于主包,Go程序的入口点必须位于main包中。其中 package 是 Go 语言声明包的关键字,main 是要声明的包名。在 Go 语言中 main 包是一个特殊的包,代表你的 Go 语言项目是一个可运行的应用程序,而不是一个被其他项目引用的库。
  • import "fmt":导入标准库中的fmt包,用于格式化输入输出。其中 import 是 Go 语言的关键字,表示导入包的意思,这里我导入的是 fmt 包,导入的目的是要使用它。
  • func main():定义主函数,是程序的执行入口。其中 func 是 Go 语言的关键字,表示要定义一个函数或者方法的意思,main 是函数名,() 空括号表示这个 main 函数不接受任何参数。在 Go 语言中 main 函数是一个特殊的函数,它代表整个程序的入口,也就是程序在运行的时候,会先调用 main 函数,然后通过 main 函数再调用其他函数,达到实现项目业务需求的目的。
  • fmt.Println("Hello, 世界!"):是通过 fmt 包的 Println 函数打印“Hello, 世界”这段文本。其中 fmt 是刚刚导入的包,要想使用一个包,必须先导入。Println 函数是属于包 fmt 的函数,这里我需要它打印输出一段文本,也就是“Hello, 世界”。

从以上分析来看,Go 语言的代码是非常简洁、完整的核心程序,只需要 package、import、func main 这些核心概念就可以实现。

3.3 编译发布

完成了你的项目后,可以编译生成可执行文件,也可以把它发布到 $GOBIN 目录,以供在终端使用。以“Hello 世界”为例,在项目根目录输入以下命令,即可编译一个可执行文件。

$ go build main.go

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

$ ./main 
Hello, 世界!

如果成功打印出“Hello, 世界”,证明程序成功生成。以上生成的可执行文件在当前目录,也可以把它安装到 $GOBIN 目录或者任意位置,如下所示:

$ go install main.go

使用 go install 命令即可,现在你在任意时刻打开终端,输入 main 回车,都会打印出“Hello, 世界”,是不是很方便!

3.4 跨平台编译

Go 语言开发工具包的另一强大功能就是可以跨平台编译。什么是跨平台编译呢?就是你在 macOS 开发,可以编译 Linux、Window 等平台上的可执行程序,这样你开发的程序,就可以在这些平台上运行。也就是说,你可以选择喜欢的操作系统做开发,并跨平台编译成需要发布平台的可执行程序即可。Go 语言通过两个环境变量来控制跨平台编译,它们分别是 GOOS 和 GOARCH 。

  • GOOS:代表要编译的目标操作系统,常见的有 Linux、Windows、Darwin 等。
  • GOARCH:代表要编译的目标处理器架构,常见的有 386、AMD64、ARM64 等。

这样通过组合不同的 GOOS 和 GOARCH,就可以编译出不同的可执行程序。比如我现在的操作系统是 macOS AMD64 的,我想编译出 Linux AMD64 的可执行程序,只需要执行 go build 命令即可,如以下代码所示:

$ GOOS=linux GOARCH=amd64 go build main.go

关于 GOOS 和 GOARCH 更多的组合,参考官方文档的 $GOOS and $GOARCH 这一节即可。

3.5 Go 编辑器推荐

好的编辑器可以提高开发的效率,这里我推荐两款目前最流行的编辑器。

第一款是 Visual Studio Code + Go 扩展插件,可以让你非常高效地开发,通过官方网站 https://code.visualstudio.com/ 下载使用。

第二款是老牌 IDE 公司 JetBrains 推出的 Goland,所有插件已经全部集成,更容易上手,并且功能强大,新手老手都适合,你可以通过官方网站 https://www.jetbrains.com/go/ 下载使用。

总结:Go语言以其高效、简洁和强大的并发能力,成为现代开发中的重要工具。通过完成环境搭建和编写第一个程序,开发者可以快速上手Go语言,并逐步探索其在后端服务、分布式系统等领域的应用。如果需要更详细的学习资料,可以参考相关教程和官方文档。

http://www.dtcms.com/a/392190.html

相关文章:

  • 【开题答辩全过程】以 HL新闻为例,包含答辩的问题和答案
  • docker运行wonderShaper实现网卡限速
  • Windows 安装 Docker Desktop 到 D 盘完整教程(含迁移方案)
  • 基于陌讯AI检测算法本地化部署教程:基于Docker的环境配置与性能测试
  • Docker Docker Compose 完整入门与实用技巧
  • ARP协议工作原理分析(基于Wireshark)
  • CKS-CN 考试知识点分享(14) Istio网络策略
  • TCP 协议全解析:握手、挥手、重传与流控的深度剖析
  • 计算机视觉(opencv)实战二十七——目标跟踪
  • 深度学习中神经网络与损失函数优化
  • 整体设计 完整的逻辑链条 之1 点dots/线lines/面faces 的三曲:三进三出的三个来回
  • 微调基本理论
  • LeetCode算法日记 - Day 48: 课程表II、火星词典
  • 【面板数据】地级市中国方言多样性指数数据集
  • C++编程学习(第35天)
  • SS443A 霍尔效应传感器:高性能磁感应解决方案
  • MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
  • GitHub 热榜项目 - 日榜(2025-09-20)
  • 怎么判断 IP是独享的
  • Linux多进程编程(上)
  • 如何在Spring Boot项目中添加自定义的配置文件?
  • 【MySQL初阶】01-MySQL服务器和客户端下载与安装
  • AI搜索的下一站:多模态、个性化与GEO的道德指南
  • OpenLayers地图交互 -- 章节四:修改交互详解
  • Gradle插件的分析与使用
  • 如何避免everything每次都重建索引
  • 基于SIFT+flann+RANSAC+GTM算法的织物图像拼接matlab仿真,对比KAZE,SIFT和SURF
  • 笔记:现代操作系统:原理与实现(3)
  • 【智能系统项目开发与学习记录】Docker 基础
  • 数据展示方案:Prometheus+Grafana+JMeter 备忘