一、Go 是什么(一句话)

一门用于高并发后端开发的编译型语言,特点是简单 + 高性能 + 易部署

Go = 比 Java 更轻量、比 Python 更快、专门做服务端和并发的语言


二、你必须先记住的 4 个核心概念

1️⃣ 包(package)

package main

👉 每个程序入口必须是 main


2️⃣ 入口函数

func main() {
}

3️⃣ 变量声明

var a int = 10
b := 20 // 常用

👉 := 是 Go 最常用写法


4️⃣ 函数

func add(a int, b int) int {
    return a + b
}

三、Go 必会数据结构

1️⃣ slice(动态数组)

nums := []int{1, 2, 3}
nums = append(nums, 4)

👉 类似 Java ArrayList


2️⃣ map(字典)

m := make(map[string]int)
m["a"] = 1

3️⃣ struct(核心)

type User struct {
    Name string
    Age  int
}

👉 Go 没有 class,用 struct + 方法


四、Go 的“核心能力”(重点)

1️⃣ 并发(goroutine)

go func() {
    fmt.Println("run async")
}()

👉 类似轻量线程


2️⃣ channel(通信)

ch := make(chan int)

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

fmt.Println(<-ch)

👉 Go 推荐思想:

不共享内存,通过通信共享数据


五、写一个最简单 Web 服务(必须会)

package main

import (
    "net/http"
)

func hello(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hello go"))
}

func main() {
    http.HandleFunc("/", hello)
    http.ListenAndServe(":8080", nil)
}

访问:

http://localhost:8080

六、推荐框架(直接上生产)

Gin(最常用)

Gin 是 Go 生态里最常用的 Web 框架之一,把 Go 的原生 HTTP 开发,变成“高性能 + 易开发 + 工程化”的后端框架

1️⃣ 路由管理(核心功能)

r.GET("/user", handler)
r.POST("/login", handler)

👉 作用:

  • URL → 自动映射到函数
  • 支持 RESTful 风格

2️⃣ 参数解析

c.Query("id")     // URL参数
c.Param("id")     // 路径参数
c.PostForm("name")// 表单
c.ShouldBindJSON(&obj)

👉 不用手动解析 request


3️⃣ JSON 返回封装

c.JSON(200, gin.H{
    "msg": "success",
})

👉 自动序列化 JSON


4️⃣ 中间件机制(非常重要)

r.Use(Logger(), Recovery())

可以做:

  • 日志
  • 鉴权
  • 限流
  • trace

👉 类似 Java 的 Filter / Interceptor


5️⃣ 高性能 HTTP 服务

Gin 是基于 Go 原生 net/http 封装的:

👉 特点:

  • 路由快(Radix Tree)
  • 内存占用低
  • 并发性能强

七、数据库(必用)

MySQL连接

db, _ := sql.Open("mysql", "user:pass@tcp(127.0.0.1:3306)/test")

👉 实际开发推荐:

  • GORM(ORM框架)

八、错误处理(Go 特殊点)

if err != nil {
    return err
}

👉 Go 没有 try/catch


九、项目结构(标准)

project/
 ├── main.go
 ├── handler/
 ├── service/
 ├── dao/
 ├── model/

十、Go 的本质理解(关键)

Go = 用最少语法做高并发后端服务


十一、你上手后应该能做什么

✔ 写 API 服务

✔ 写高并发接口

✔ 写微服务

✔ 写工具/中间件


一句话总结

Go 不难,核心就三件事:struct + goroutine + Web服务

Go 没有类似 Lombok 的编译期注解体系

更多推荐