下载工作台
Go 编程实战

Go 入门与环境搭建

试读上半部分 · 解锁后可读全文

第 1 章 · Go 入门与环境搭建

本章目标:理解 Go 编译型、静态类型、自带工具链特点;在 Windows / macOS 上安装 Go 1.22+ 并配置 GOPATH / GO111MODULE;掌握 go mod initVS Code / GoLand 基础;能编写、编译、运行 Hello World;理解 标准项目布局cmd/internal/pkg/);掌握 交叉编译;能用对照表说明 Go 与 java-dev / python-dev 在运行模型、包管理、入口文件上的差异;在虚构练习目录 learn-go 中完成 toolkit-go 入门工程。

学时建议:3~4 小时(含 1 小时跟练与排错)

前置:具备基础电脑操作能力;若已学 java-dev ch01python-dev ch01,可对照安装与运行流程加速理解。


1.1 场景说明:为什么需要 learn-go?

你在 java-dev 中用 learn-java/toolkit-demo 完成了 Maven 与 HelloWorld。团队新项目代号 toolkit-go(通用工具库练习,后续衔接 gin-webpaas ch17)要求使用 Go 1.22+ 开发,以便单二进制部署与高并发 API 场景。本章在独立目录 learn-go 中搭建环境,不与 Java / Python 练习目录混用

维度java-dev(learn-java)python-dev(python-learn)go-dev(learn-go)
运行模型编译到字节码 → JVM解释型,.py 直接运行编译为原生二进制
版本管理java -versionpython --versiongo version
包管理Maven / pom.xmlpip + venvgo mod / go.mod
入口main 方法python main.pyfunc main() + go run
练习项目toolkit-demohello.py、shop-demotoolkit-go
IDE 推荐IDEA CommunityVS Code / PyCharmVS Code + Go 插件 / GoLand
说明:本章所有路径、模块名、域名均为教学虚构,不涉及任何真实公司仓库、内部配置或生产密钥。模块路径统一为 example.com/toolkit-go
学习路径(go-dev)
  ch01 入门与环境  →  ch02 变量与类型  →  ch03 流程控制  →  ch04 切片与 map
       ↑ 你在这里
  对照学习:java-dev ch01~ch04、python-dev ch01~ch04
  后续:ch09~ch10 并发 → ch11~ch13 IO/HTTP/测试 → ch14 排序 → ch15 毕业项目 → gin-web

1.2 Go 与 Java / Python 核心对照表

对比项Python(python-dev)Java(java-dev)Go(go-dev)
类型系统动态类型静态类型,编译期检查静态类型,编译期检查
缩进 / 语法缩进是语法{};{} 无分号强制(换行规则)
变量声明x = 10int x = 10;x := 10var x int = 10
字符串"hello"String 不可变string 不可变
列表/数组list 动态数组定长 + ArrayListslice 动态 + 定长 array
空值Nonenullnil(指针、slice、map、chan、interface)
模块import requestsimport java.util.List;import "fmt" + 模块路径
运行python app.pyjavac + javago run / go build
异常try/excepttry/catch多返回值 error(ch07)
并发asyncio / 多进程Thread / Executorgoroutine + channel(ch09)
Web 后续django-web / flask-webspring-boot-webgin-web

何时选 Go:云原生组件、高 QPS API、单文件部署、资源占用敏感、K8s/Docker 生态。

何时仍选 Java:企业 Spring 生态、Android、强类型大型团队协作、成熟中间件。

何时仍选 Python:脚本自动化、数据科学、快速原型、Django/Flask 全栈。

本课程采用多语言对照:同一虚构商城业务(slugis_published、价格)在不同语言中落地,便于真实选型时做理性权衡。


1.3 安装 Go 1.22+

推荐 Go 1.22 或 1.23(可从 https://go.dev/dl/ 下载)。Go 安装包自带完整工具链(编译器、格式化、测试、模块管理),无需单独安装类似 Maven 的构建工具。

1.3.1 Windows 逐步操作

步骤操作说明
1访问 go.dev/dl选 Windows amd64 安装包(.msi)
2运行安装程序路径建议英文,默认 C:\Go
3确认环境变量安装器通常自动写入 Path
4新开终端验证旧终端可能未刷新 PATH

1.3.2 配置与验证(Windows)

变量说明
PathC:\Go\bin(或你的 GOROOT\bin)
GOPATH用户工作区,默认 %USERPROFILE%\go
GO111MODULEGo 1.16+ 默认 on,模块模式开启
# 验证(新开 PowerShell)
go version
# go version go1.22.5 windows/amd64

go env GOROOT
go env GOPATH
go env GO111MODULE
go env GOOS
go env GOARCH
命令通过标准
go version显示 go1.22 或更高
go env GOROOT指向 Go 安装目录
go env GO111MODULEon

1.3.3 macOS / Linux 逐步操作

步骤操作说明
1下载 macOS pkg 或 Linux tar.gzamd64 或 arm64 按芯片选择
2macOS:双击 pkg 安装默认 /usr/local/go
3Linux:解压到 /usr/local/go手动追加 PATH
4或用 Homebrewbrew install go
# macOS / Linux 验证
go version

export PATH="/usr/local/go/bin:$PATH"   # 若未自动配置
go env GOPATH GO111MODULE GOOS GOARCH

1.3.4 GOPATH 与模块模式说明

概念说明
GOROOTGo 安装目录(工具链)
GOPATH用户目录,存放 bin/pkg/ 缓存;模块时代代码不必放 GOPATH 内
GO111MODULE=on启用 go mod;Go 1.16+ 默认开启
模块缓存$GOPATH/pkg/mod$(go env GOMODCACHE)
与 Java 对照GOPATH/pkg/mod 类似 Maven 本地仓库 ~/.m2/repositorygo.mod 类似 pom.xml

1.4 练习目录 learn-go 与 toolkit-go 初始化

建议在用户目录下创建独立练习根目录,与 learn-javapython-learn 并列:

~/learn-go/                          # Windows: %USERPROFILE%\learn-go
├── ch01/
│   └── hello/
│       ├── go.mod
│       └── main.go
├── toolkit-go/                      # 贯穿 go-dev 至 ch15
│   ├── go.mod
│   ├── go.sum                       # go mod tidy 后生成
│   ├── cmd/
│   │   └── toolkit/
│   │       └── main.go
│   ├── internal/                    # 私有包(ch08 详讲)
│   │   └── report/
│   └── pkg/                         # 可选对外库
└── README.md

1.4.1 初始化模块(Windows)

步骤操作说明
1创建目录learn-go\toolkit-go
2进入目录cd 到项目根
3初始化模块go mod init example.com/toolkit-go
4创建 main.go见 1.5 节
5运行go run .go run ./cmd/toolkit
mkdir $env:USERPROFILE\learn-go\toolkit-go
cd $env:USERPROFILE\learn-go\toolkit-go
go mod init example.com/toolkit-go

1.4.2 初始化模块(macOS / Linux)

mkdir -p ~/learn-go/toolkit-go
cd ~/learn-go/toolkit-go
go mod init example.com/toolkit-go

初始化后生成的 go.mod

module example.com/toolkit-go

go 1.22

1.5 第一个程序:Hello World 完整代码

1.5.1 根目录 main.go(快速体验)

在项目根创建 main.go

// main.go — learn-go 入门示例,对照 java-dev HelloWorld
package main

import (
	"fmt"
	"os"
	"runtime"
)

func main() {
	fmt.Println("Hello, Go!")
	fmt.Printf("Go %s | %s/%s\n", runtime.Version(), runtime.GOOS, runtime.GOARCH)

	if len(os.Args) > 1 {
		fmt.Println("你好," + os.Args[1])
	}
}

要点

概念说明
package main可执行程序必须是 main
func main()程序入口,类比 Java public static void main
import "fmt"标准库格式化 I/O
os.Args命令行参数,类比 Java String[] args
首字母大写导出标识符;fmt.PrintlnPrintln 可导出

1.5.2 编译与运行(双平台)

Windows(PowerShell):

cd $env:USERPROFILE\learn-go\toolkit-go
go run .
go build -o toolkit-go.exe .
.\toolkit-go.exe
.\toolkit-go.exe 小明

macOS / Linux(bash):

cd ~/learn-go/toolkit-go
go run .
go build -o toolkit-go .
./toolkit-go
./toolkit-go 小明
步骤Java 对照Python 对照
go run .mvn exec:javapython main.py
go buildmvn package 打 jar无编译步骤
生成单文件二进制需 JVM 运行 jar需 Python 解释器

1.5.3 cmd/ 标准入口(推荐布局)

将入口迁移到 cmd/toolkit/main.go(ch15 毕业项目沿用此结构):

// cmd/toolkit/main.go — toolkit-go 标准入口
package main

import (
	"fmt"

	"example.com/toolkit-go/internal/version"

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。