一、引言

上一章节过后,本打算开始学习go的数据类型,但是刚开始学习Go这门开发语言,我和其他初学者一样,有一些学习的疑惑,需要理解和学习一下。这样在入门学习的时候,能理解清楚,对后面深入长远的学习Go这门语言,也会有很多帮助。

二、为什么要学习Go

2.1、Go能开发高性能后端服务或者微服务架构

2.2、是目前主流云原生(Kubernetes、Docker、Prometheus等)生态核心语言,适配云原生生态

2.3、静态类型和编译检查

2.4、语法简洁,容易上手,编写部署简单、高性能的系统工具

三、与Python语言的区别

如果你已经学习了Python语言,学习Go还有必要学习吗?下面是与Python语言的对比:

特性 Python Go

设计目标

简洁、易读、快速开发

高并发、高性能、简洁部署

类型系统

动态类型

静态类型

编译方式

解释型

编译型(生成可执行文件)

并发支持

通过线程、协程(如 asyncio)

原生 goroutine,轻量高效

适合人群

数据分析、AI、Web开发、脚本编写

后端开发、微服务、系统编程、云原生

部署方式 依赖解释器和环境 单文件部署,跨平台

如果你有以下目标,学习 Go 是非常值得的:

  • 想开发高性能后端服务或微服务架构。

  • 对云原生技术栈(Kubernetes、Docker)感兴趣。

  • 想写部署简单、性能高的系统工具。

  • 想拓展编程视野,掌握静态类型语言。

如果你主要做数据分析、AI、脚本自动化,Python 已经非常够用了。

总之,技多不压身,多学习,某些场景一定能用上

四、Go实际应用场景

目前Go实际应用非常广泛,主要有以下的实际应用:

应用场景 说明与优势 推荐使用 Go 的理由
Web 后端开发 构建高性能 RESTful API,常用框架如 Gin、Fiber 高并发处理能力,部署简单
微服务架构 每个服务独立部署,适合容器化和服务拆分 编译为单文件,启动快,资源占用低
云原生开发 Kubernetes、Docker、Prometheus 等核心项目均使用 Go 云原生生态核心语言
命令行工具开发 构建跨平台 CLI 工具,如 kubectlgh 编译后为可执行文件,跨平台部署方便
网络编程 构建高并发网络服务,如聊天服务器、代理服务器 goroutine 并发模型高效且易用
系统工具与运维脚本 替代 Python 编写系统工具、自动化脚本 性能更高,部署更方便
日志与数据处理 实时日志收集、Kafka 消费者等场景 并发处理能力强,适合流式数据处理
区块链开发 以太坊客户端 Geth、Hyperledger Fabric 等均使用 Go 适合构建分布式系统和底层协议
嵌入式与边缘计算 在部分嵌入式场景中使用,如 IoT 网关、边缘服务 编译后体积小,运行效率高

五、新手怎么开始写Go程序

5.1、新建工作目录

mkdir my-go-project

cd my-go-project

go mod init my-go-project

5.1.1、go mod init my-go-project是什么意思?

这是 Go 的模块初始化命令,用来创建一个新的 Go 模块。它的作用是:

  1. 创建 go.mod 文件:这是 Go 项目的配置文件,记录模块名、依赖包版本等信息。

  2. 定义你的模块名:my-go-project 是你给这个模块起的名字,通常是项目名或仓库路径(比如 github.com/kunx/my-go-project)。

  3. 启用 Go Modules 管理依赖:Go Modules 是 Go 官方推荐的依赖管理方式,替代了以前的 GOPATH 模式。

5.1.2、为什么要这么做?

使用 go mod init 有几个重要好处:

  • 依赖管理更清晰

        你可以使用 go get 安装第三方包,Go 会自动记录版本信息到 go.mod 和 go.sum 文件中。

  • 项目更易维护

        别人拿到你的项目,只要运行 go build 或 go run,Go 会自动下载依赖,保证一致性。

  • 支持多版本和私有包

        你可以指定依赖的版本,也可以引用私有仓库或本地模块。

5.2、写第一个Go程序

在my-go-project目录创建一个名为main.go的文件,写入以下内容:

package main  // 声明这是一个可执行程序

import "fmt"    // 引入标准库中的 fmt 包,用于输出

func main() {   // 主函数,程序从这里开始执行

    fmt.Println("Hello, Go!")  // 打印一行文本

}

5.2.1、为什么文件名要定义main.go,是必须的吗?

不是必须叫 main.go,你可以叫它 app.gostart.go 等,但在某些情况下这样命名是约定俗成的做法,尤其是对于 Go 新手或小项目来说,它有一些实际好处。

当你运行 go run . 或 go build 时,Go会寻找包含 package main,并且定义了 func main()的文件,程序就可以运行。

好处是什么:

  • 清晰表达程序入口

        Go 程序的入口是 main 包中的 main() 函数。把文件命名为 main.go,可以让人一眼看出这是          程序的启动文件。

  • 方便管理多个文件

      如果你的项目有多个文件,比如:

main.go

utils.go

handler.go

     那么 main.go 通常是负责启动程序的主文件,其他文件是辅助模块。

  • 工具和框架兼容性好

    一些构建工具或部署脚本默认查找 main.go,所以用这个名字可以避免配置麻烦。

5.2.2、为什么要定义 package main

  • 每个 Go 文件都必须声明一个包(package)。

  • package main 是特殊的包名,表示这是一个可执行程序,而不是一个库。

  • 只有 package main 才能包含 main() 函数,Go 编译器会从这里开始执行程序。

5.2.3、为什么要 import 包

  • import 用于引入其他包的功能,比如标准库中的 fmt(用于格式化输出)、os(操作系统接口)等。

  • Go 的模块化设计鼓励你只引入需要的包,保持代码简洁。

5.2.4、为什么要写func main()函数

  • main() 是程序的入口函数,Go 程序从这里开始执行。

  • 它必须在 package main 中定义,不能带参数或返回值。

六、总结

本章节,熟悉了为什么要学习Go,与Python的区别,实际应用场景,以及新手怎么开始第一个Go程序。下一章节,继续学习go的数据类型,GoGoGo

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐