Go语言快速入门Go语言快速入门
首页
基础篇
进阶篇
高阶篇
实战篇
Go官方网站
编程指南
首页
基础篇
进阶篇
高阶篇
实战篇
Go官方网站
编程指南
  • 基础篇

    • 🚀 基础篇
    • 第1章 - 环境安装
    • 第2章 - Hello World
    • 第3章 - 变量与常量
    • 第4章 - 数据类型
    • 控制流程
    • 函数
    • 数组与切片
    • Map
    • 结构体
    • 指针

第2章 - Hello World

嘿,朋友们!

经典的第一个程序来了!通过Hello World,我来带你了解Go程序的基本结构。说实话,我第一次看到Go的Hello World时,真的被它的简洁惊艳到了——原来代码可以这么干净!这和Java的冗长完全不同,让我这个自学的菜鸟也能快速上手。

🛠️ 创建项目

# 创建项目目录
mkdir hello-world
cd hello-world

# 初始化模块(类似 npm init)
go mod init hello-world

✍️ 编写代码

创建 main.go:

package main

import "fmt"

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

🚀 运行程序

go run main.go

输出:

Hello, World!

🔍 代码解析

让我们逐行理解:

package main  // 1. 包声明

每个Go文件必须以 package 声明开头。main 是特殊的包名,表示这是一个可执行程序。

对比其他语言

// Java没有显式的包声明(可选)
// JavaScript没有包的概念,用模块代替
import "fmt"  // 2. 导入包

fmt 是Go标准库的格式化包,提供打印功能。类似Java的 import java.util.*;

func main() {  // 3. main函数
    // ...
}

程序入口,Go程序从 main 包的 main() 函数开始执行。

注意大括号

Go强制要求 { 必须和函数名在同一行!下面的写法会报错:

func main()
{  // ❌ 编译错误
}
fmt.Println("Hello, World!")  // 4. 打印输出

调用 fmt 包的 Println 函数。注意:

  • 函数名首字母大写 Println(Go的导出规则)
  • 自动换行(类似 Java 的 System.out.println)

🎯 对比:Java vs Go vs JavaScript

同样的Hello World,三种语言:

Java:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

JavaScript:

console.log("Hello, World!");

Go:

package main

import "fmt"

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

Go的代码量介于两者之间,既不像Java那么啰嗦,又比JS多了类型安全。

⚙️ 编译 vs 运行

直接运行

go run main.go

go run 会编译并立即运行,适合开发调试。

编译成可执行文件

# 编译
go build main.go

# Windows 生成 main.exe
# Linux/Mac 生成 main(无后缀)

# 运行
./main   # Linux/Mac
main.exe # Windows

交叉编译(超方便!)

在Windows上编译Linux可执行文件:

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

这是Go的一大优势:一次编写,到处编译!

📁 多个文件的项目

当项目有多个文件时:

hello-world/
├── main.go
├── utils.go
└── go.mod

utils.go:

package main

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

main.go:

package main

import "fmt"

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

运行整个项目:

go run .
# 或
go run main.go utils.go

📚 fmt包常用函数

fmt 包很常用,记住这几个:

package main

import "fmt"

func main() {
    name := "张三"
    age := 18
    
    // Println - 打印并换行
    fmt.Println("Hello", name)  // Hello 张三
    
    // Printf - 格式化打印(类似C语言)
    fmt.Printf("姓名: %s, 年龄: %d\n", name, age)  // 姓名: 张三, 年龄: 18
    
    // Sprintf - 格式化返回字符串
    info := fmt.Sprintf("%s今年%d岁", name, age)
    fmt.Println(info)  // 张三今年18岁
    
    // Print - 打印不换行
    fmt.Print("不换行")
    fmt.Print("还是这一行\n")
}

常用格式化占位符:

占位符说明示例
%s字符串"hello"
%d整数123
%f浮点数3.14
%t布尔值true
%v任意类型(万能)自动推断
%+v带字段名的结构体{Name:张三}
%T打印类型int

💪 练习

试着修改代码,完成以下练习:

  1. 打印你的名字
  2. 打印一首古诗(多行)
  3. 使用 Printf 格式化打印你的年龄
参考答案
package main

import "fmt"

func main() {
    // 1. 打印名字
    fmt.Println("我的名字是小明")
    
    // 2. 打印古诗
    fmt.Println("静夜思")
    fmt.Println("床前明月光,")
    fmt.Println("疑是地上霜。")
    fmt.Println("举头望明月,")
    fmt.Println("低头思故乡。")
    
    // 3. 格式化打印
    name := "小明"
    age := 20
    fmt.Printf("%s今年%d岁\n", name, age)
}

太棒了!你已经写出了第一个Go程序。下一节我们来学习变量与常量!

最近更新: 2025/12/27 13:26
Contributors: 王长安
Prev
第1章 - 环境安装
Next
第3章 - 变量与常量