Go 语言学习手册
免费学习
完整知识体系
快速检索
Go语言学习手册《反射(reflect)》:反射允许程序在运行时检查类型和值,常用于序列化、ORM 等框架。 **基本用法:** ```go import "reflect" func inspect(v interface{}) { t := reflect.TypeOf...
反射与泛型
反射(reflect)
【详细说明 & 代码示例】
反射允许程序在运行时检查类型和值,常用于序列化、ORM 等框架。
**基本用法:**
```go
import "reflect"
func inspect(v interface{}) {
t := reflect.TypeOf(v)
val := reflect.ValueOf(v)
fmt.Println("Type:", t.Name())
if t.Kind() == reflect.Struct {
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
value := val.Field(i)
fmt.Printf("%s: %v\n", field.Name, value.Interface())
}
}
}
```
**修改值:** 需要可寻址(`Elem` 获取指针指向的值)。
```go
x := 10
v := reflect.ValueOf(&x).Elem()
v.SetInt(20) // x 变为 20
```
**创建实例:**
```go
t := reflect.TypeOf(MyStruct{})
newVal := reflect.New(t).Elem()
newVal.Field(0).SetString("hello")
```
**注意:** 反射性能较低,避免在热路径中使用。
**泛型(Go 1.18+):** 支持类型参数,提供编译时多态。
```go
func Max[T comparable](a, b T) T {
if a > b { return a }
return b
}
```
学习提示:建议安装 Go 环境(go.dev/dl),使用 VS Code 或 GoLand 编写代码,并熟练使用 go run、go build、go mod 等命令。
全部章节目录(共 30 个知识点)
Go 基础 (1个知识点)
变量与数据类型 (2个知识点)
控制流程 (2个知识点)
结构体与方法 (2个知识点)
接口(interface) (1个知识点)
指针 (1个知识点)
错误处理 (1个知识点)
包管理 (1个知识点)
并发:goroutine (1个知识点)
并发:channel (1个知识点)
同步原语 (1个知识点)
标准库 (2个知识点)
网络与 HTTP (1个知识点)
测试与性能 (1个知识点)
反射与泛型 (1个知识点)
CGO 与汇编 (1个知识点)
Web 框架 (1个知识点)
数据库操作 (1个知识点)
配置与日志 (1个知识点)
部署与运维 (1个知识点)
设计模式 (2个知识点)
进阶技巧 (2个知识点)
使用说明
- • 本手册涵盖 Go 语言从基础到并发实战、Web 服务的完整知识体系
- • 在搜索框输入关键词,快速定位相关知识点
- • 点击条目标题进入详情页,查看详细说明与代码示例
- • 页面按分类展示所有知识点,方便系统性学习
- • 建议安装 Go 环境并使用 VS Code 或 GoLand 进行实践