Hello World #

一、第一个Go程序 #

1.1 创建项目目录 #

bash
mkdir hello
cd hello

1.2 初始化模块 #

bash
go mod init hello

这会创建go.mod文件:

text
module hello

go 1.22

1.3 编写代码 #

创建main.go文件:

go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

1.4 运行程序 #

bash
go run main.go

输出:

text
Hello, World!

二、程序结构解析 #

2.1 包声明 #

go
package main
  • 每个Go文件必须声明所属包
  • main包表示这是一个可执行程序
  • 可执行程序必须包含main函数

2.2 导入包 #

go
import "fmt"
  • fmt是Go标准库中的格式化I/O包
  • 使用import关键字导入
  • 导入的包必须使用,否则编译报错

多包导入方式:

go
import (
    "fmt"
    "os"
    "strings"
)

2.3 main函数 #

go
func main() {
    fmt.Println("Hello, World!")
}
  • main函数是程序入口
  • 无参数、无返回值
  • 程序从这里开始执行

2.4 语句 #

go
fmt.Println("Hello, World!")
  • 调用fmt包的Println函数
  • Go语句不需要分号结尾
  • Println自动换行

三、编译与运行 #

3.1 go run #

直接编译运行:

bash
go run main.go

适合开发调试,不会生成可执行文件。

3.2 go build #

编译生成可执行文件:

bash
go build

或指定输出文件名:

bash
go build -o hello main.go

运行可执行文件:

bash
./hello

3.3 go install #

编译并安装到$GOPATH/bin

bash
go install

之后可直接运行:

bash
hello

3.4 跨平台编译 #

编译Linux版本:

bash
GOOS=linux GOARCH=amd64 go build

编译Windows版本:

bash
GOOS=windows GOARCH=amd64 go build

常用GOOS/GOARCH组合:

目标系统 GOOS GOARCH
Linux 64位 linux amd64
Windows 64位 windows amd64
macOS Intel darwin amd64
macOS M1/M2 darwin arm64

四、代码格式化 #

4.1 gofmt #

Go内置格式化工具:

bash
gofmt -w main.go
  • -w:直接修改文件
  • 统一代码风格,消除争议

4.2 go fmt #

简化命令:

bash
go fmt main.go

五、代码规范 #

5.1 命名规范 #

  • 包名:小写,单个单词(如fmthttp
  • 变量/函数:驼峰命名(如userNamegetInfo
  • 导出标识符:首字母大写(如Println
  • 私有标识符:首字母小写(如print

5.2 注释 #

单行注释:

go
fmt.Println("Hello")  // 打印Hello

多行注释:

go
/*
这是一个多行注释
可以跨越多行
*/

文档注释:

go
func Add(a, b int) int {
    return a + b
}

5.3 大括号风格 #

左大括号不能单独一行:

go
func main() {  // 正确
    fmt.Println("Hello")
}

func main()
{  // 错误!编译失败
    fmt.Println("Hello")
}

六、扩展示例 #

6.1 命令行参数 #

go
package main

import (
    "fmt"
    "os"
)

func main() {
    if len(os.Args) > 1 {
        fmt.Printf("Hello, %s!\n", os.Args[1])
    } else {
        fmt.Println("Hello, World!")
    }
}

运行:

bash
go run main.go Go

输出:

text
Hello, Go!

6.2 用户输入 #

go
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    fmt.Print("请输入你的名字: ")
    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan()
    name := scanner.Text()
    fmt.Printf("Hello, %s!\n", name)
}

6.3 多文件项目 #

项目结构:

text
myapp/
├── go.mod
├── main.go
└── utils/
    └── helper.go

utils/helper.go:

go
package utils

func Greet(name string) string {
    return "Hello, " + name + "!"
}

main.go:

go
package main

import (
    "fmt"
    "myapp/utils"
)

func main() {
    message := utils.Greet("Go")
    fmt.Println(message)
}

七、开发流程 #

7.1 标准流程 #

  1. 创建项目目录
  2. 初始化模块:go mod init
  3. 编写代码
  4. 运行测试:go run
  5. 格式化:go fmt
  6. 编译构建:go build

7.2 常用开发命令 #

bash
go run .          # 运行当前目录所有Go文件
go build .        # 编译当前目录
go test ./...     # 运行所有测试
go vet ./...      # 静态分析
go fmt ./...      # 格式化所有文件

八、常见错误 #

8.1 未使用的变量 #

go
func main() {
    x := 10  // 错误:x declared but not used
}

解决:使用或删除变量

8.2 未使用的导入 #

go
import "fmt"  // 错误:imported and not used

解决:使用或删除导入

8.3 语法错误 #

go
fmt.Println("Hello"  // 错误:missing ) at end of file

解决:检查括号匹配

九、总结 #

第一个Go程序的关键点:

  1. 包声明package main
  2. 导入包import "fmt"
  3. 入口函数func main()
  4. 运行方式go rungo build

Go程序的特点:

  • 结构简单清晰
  • 强制代码规范
  • 编译速度快
  • 部署方便

准备好学习Go的基础语法了吗?让我们进入下一章!

最后更新:2026-03-26