Go语言零基础入门:从0到能写程序(超详细版)

👨‍💻 关于作者:会编程的土豆

"不是因为看见希望才坚持,而是坚持了才看见希望。"

你好,我是会编程的土豆,一名热爱后端技术的Java学习者。

📚 正在更新中的专栏:

💕作者简介:后端学习者

这篇不是那种"扫一眼就会忘"的速成文,而是带你真正入门 Go(Golang)

假设你已经会 C / C++,我会用类比帮你快速理解。


一、Go语言是什么?

一句话:

复制代码
Go = 简洁 + 高并发 + 工程化强

为什么学 Go?

复制代码
✔ 语法简单(比 C++ 好学)
✔ 原生支持并发(goroutine)
✔ 大厂常用(后端、微服务)
✔ 编译快,部署方便

二、第一个 Go 程序

Go 复制代码
package main

import "fmt"

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

对比 C++

Go C++
package main
func main() int main()
fmt.Println cout

三、变量与基本类型


1. 定义变量

标准写法

复制代码
var a int = 10

简写(最常用)

复制代码
a := 10

类似 C++:

复制代码
int a = 10;

2. 常见类型

复制代码
int
float64
string
bool

示例

Go 复制代码
var a int = 10
var b float64 = 3.14
var s string = "hello"
var ok bool = true

四、输入输出


输出

复制代码
fmt.Println("hello")
fmt.Printf("%d\n", a)

输入

复制代码
var a int
fmt.Scan(&a)

注意:必须加 &(取地址)


五、条件语句


if

Go 复制代码
if a > 10 {
    fmt.Println("big")
} else {
    fmt.Println("small")
}

特点

复制代码
✔ 没有括号 ()
✔ 必须有 {}

六、循环


1. for(Go只有for)


类似 C++

复制代码
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

while写法

复制代码
i := 0
for i < 5 {
    i++
}

无限循环

复制代码
for {
}

七、数组和切片(重点)


1. 数组

复制代码
var a [5]int

2. 切片(更常用)

复制代码
a := []int{1,2,3}

添加元素

复制代码
a = append(a, 4)

类比 C++

复制代码
slice ≈ vector

八、函数


定义函数

复制代码
func add(a int, b int) int {
    return a + b
}

简写

复制代码
func add(a, b int) int {
    return a + b
}

多返回值(Go特色)

复制代码
func div(a, b int) (int, int) {
    return a / b, a % b
}

九、指针(比C简单)


示例

复制代码
var a int = 10
var p *int = &a

fmt.Println(*p)

特点

复制代码
✔ 没有指针运算
✔ 更安全

十、结构体


复制代码
type Person struct {
    name string
    age  int
}

使用

复制代码
p := Person{"Tom", 20}
fmt.Println(p.name)

十一、Map(哈希表)


复制代码
m := make(map[string]int)

m["a"] = 1
m["b"] = 2

遍历

复制代码
for k, v := range m {
    fmt.Println(k, v)
}

十二、并发(Go最强的地方)


goroutine

复制代码
go func() {
    fmt.Println("hello")
}()

channel

Go 复制代码
ch := make(chan int)

go func() {
    ch <- 10
}()

x := <-ch
fmt.Println(x)

十三、完整小例子(数组求和)

Go 复制代码
package main

import "fmt"

func main() {
    nums := []int{1,2,3,4,5}
    sum := 0

    for _, v := range nums {
        sum += v
    }

    fmt.Println(sum)
}

十四、Go vs C++ 总结

对比 Go C++
语法 简洁 复杂
并发 原生支持 复杂
指针 简化 强大但危险
STL 很丰富

十五、学习路线建议

你现在是:

复制代码
✔ 会C/C++
✔ 正在学数据结构

建议路线

复制代码
1. 语法(这篇)
2. 切片 + map(重点)
3. 并发(goroutine)
4. 写项目(Web / 爬虫)

十六、一句话总结

复制代码
Go = 更简单的C + 自带并发 + 工程友好
相关推荐
颜酱1 小时前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱1 小时前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
小大宇2 小时前
python flask框架 SSE流式返回、跨域、报错
开发语言·python·flask
嘉伟桑2 小时前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
柒星栈2 小时前
PHP 源码怎么加密防破解?三套方案实战指南
开发语言·php·android studio
勉灬之2 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
武子康3 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
我叫黑大帅3 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
这是个栗子3 小时前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
蓝创工坊Blue Foundry3 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel