Hexo

Hexo

go-结构体成员Tag
Created2026-03-31
《Go 程序设计语言》4.5 JSON — 结构体成员 Tag1. Tag 是什么?Tag(标签) 是附加在结构体字段上的元信息字符串,用反引号 ` 包裹: 123456type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actors []string} 💡 Tag 不影响 Go 代码的逻辑,它是给 encoding/json 等包读取的”标注”,用来控制序列化/反序列化的行为。 2. Tag 的语法1`key:"value" key2:"value2"` 以 JSON 为例,通用格式为: 1`json:"字段名,选项"` 写法 含义 json:"released" JSON 字段名为 released json:"col...
go-结构体核心概念总结
Created2026-03-31
《Go 程序设计语言》4.4 结构体 核心概念总结1. 基本定义结构体(struct)是聚合数据类型,将零个或多个不同类型的值组合成一个实体: 1234567891011type Employee struct { ID int Name string Address string DoB time.Time Position string Salary int ManagerID int}var dilbert Employee 🔹 相同类型成员可合并声明123type Point struct { X, Y int // 等价于 X int; Y int} 2. 成员访问与修改1234567891011// 点操作符访问dilbert.Name = "Alice"fmt.Println(dilbert.Salary)// 取成员地址(成员可寻址时)position := &dilbert.Positio...
go-切片用法-切片头详解(2/2)
Created2026-03-31
Go 语言:切片头(Slice Header)深度解析🔹 切片头是什么?Go 中切片变量本身不直接存储数据,它只是一个包含三个字段的小结构体,这个结构体就叫切片头(Slice Header): 123456// Go 源码中的实际定义(reflect 包)type SliceHeader struct { Data uintptr // 指针,指向底层数组 Len int // 长度 Cap int // 容量} 🎯 形象比喻123456789切片变量 values┌──────────────────────┐│ Data: 0xABC (指针) ││ Len: 4 │ ← 这三个字段就是"切片头"│ Cap: 4 │└──────┬───────────────┘ │ ▼ 底层数组 [5, 3, 8, 1] ← 真正的数据在这里 💡 切片头就像一个遥控器,真正的数据(底层数组)...
go-结构体指针与返回值类型知识点汇总
Created2026-03-31
Go 结构体指针与返回值类型 知识点汇总1. 函数返回指针 *T vs 返回值 T🔹 返回指针 *Employee — 可以直接修改原始数据1234567func EmployeeByID(id int) *Employee { /* ... */ }// ✅ 读取fmt.Println(EmployeeByID(id).Position)// ✅ 修改 — 修改的是原始数据EmployeeByID(id).Salary = 0 内存模型: 12EmployeeByID(id) → 指针 → 内存中的 Employee ↑ 修改 Salary,改的是它 💡 返回指针时,你拿到的是原始数据的地址,通过指针修改就是直接改原始数据。 🔹 返回值 Employee — 不能直接修改1234567func EmployeeByID(id int) Employee { /* ... */ }// ✅ 读取fmt.Println(EmployeeByID(id...
go-利用map构建set
Created2026-03-31
Go 语言:使用 map[string]struct{} 实现 Set🔹 struct{} 是什么?struct{} 是空结构体,Go 中最小的类型: 12var s struct{}fmt.Println(unsafe.Sizeof(s)) // 0 —— 占用 0 字节内存 它只有一个可能的值:struct{}{}(空结构体的字面量) 不占用任何内存空间,是理想的”占位符”类型 🔹 为什么用它做 Set?Set(集合)只关心 key 存不存在,value 没有实际意义。对比两种写法: 12345// 方式一:map[string]bool — value 占 1 字节seen := map[string]bool{"alice": true, "bob": true}// 方式二:map[string]struct{} — value 占 0 字节 ✅ 更省内存seen := map[string]struct{}{"ali...
go-map用法
Created2026-03-31
《Go 程序设计语言》4.3 Map 核心概念总结1. Map 的本质Map 是哈希表的引用,类型写作 map[K]V,存储键值对。 组成部分 要求/说明 Key 必须支持 == 比较(所以 slice、map、function 不能做 key) Value 无任何类型限制 2. 创建方式1234567891011//make 创建(推荐用于需要指定初始容量的场景)ages := make(map[string]int)//字面量初始化ages := map[string]int{ "alice": 31, "charlie": 34,}//空 map(等价于 make,但更简洁)ages := map[string]int{} 3. 核心操作123456789101112131415161718192021222324252627//赋值ages["alice"] = 32//读取(key 不存在返回 value 类型的零值)a...
go-切片用法(1-2)
Created2026-03-31
Go 语言切片(Slice)完全指南1. Slice 的本质结构Slice 是变长序列,由三个部分组成: 1234567┌─────────┬─────────┬─────────┐│ 指针 │ 长度 │ 容量 ││ (ptr) │ (len) │ (cap) │└────┬────┴─────────┴─────────┘ │ ▼ [ 底层数组 ... ] 字段 说明 指针 (ptr) 指向底层数组中 slice 可访问的第一个元素 长度 (len) slice 中的元素个数 容量 (cap) 从 slice 起点到底层数组末尾的元素总数 2. 数组与切片的声明区别12345678// 数组(固定长度)a := [5]int{1, 2, 3, 4, 5} // [5]intmonths := [...]string{1: "Jan", 2: "Feb", 12: "...
helix-metis长轮询
Created2026-03-15
Helix 后端长轮询方案详解一、当前问题123456当前 Webhook 模式(需要公网 IP): Helix ──POST /metis/events──▶ OpenClaw:8765 ❌ OpenClaw 必须有公网可达地址长轮询模式(不需要公网 IP): OpenClaw ──GET /poll──▶ Helix ✅ 客户端主动出站 OpenClaw ──POST /bot_callback──▶ Helix ✅ 已有(send.ts 不变) 核心思路:反转连接方向。不再由 Helix 推消息给 OpenClaw,而是 OpenClaw 主动向 Helix 拉消息。 二、长轮询通信流程12345678910111213141516171819202122232425时间轴 ─────────────────────────────────────────────────────────────▶OpenClaw Helix 后...
helix
Created2026-03-15
helix发消息的请求Helix 发送的请求 body 中路由信息是放在 aid_context 嵌套对象里的(body.aid_context[“User-Id”]),而不是 HTTP headers 或 body 顶层字段。 123456789{ "aid_context": { "User-Id": "user_3c0a8d30ff7d4e9fa497e5c0ef737c59", "Env-Id": "env_32eb5875894744d39fcd9ff81fedcece", "Task-Id": "task_cc814a7bace74972b3bb45a06d141f2d", "Bot-Id": "assistant_b3708f670f3f4e40bb8f98d4d121097f" }, "content": &...
server添加数据库
Created2026-03-13
[任务规划完成]让我先查看项目的路由配置和相关文件,确认接口的完整路径和请求参数格式。[读取文件]现在让我再看一下常量定义,确认 Header 的 key 名称:[读取文件]现在我掌握了所有信息。以下是完整的测试指南: 如何测试 Chat 接口接口信息从配置文件中可以看到: 配置 值 监听 IP 0.0.0.0 监听端口 8086 路由前缀 /openclaw → /api 接口路径 POST /chat 所以完整的接口地址是:http://localhost:8086/openclaw/api/chat 请求参数说明从 chat_controller.go 的 Chat 方法可以看到,请求分为两部分: HTTP Header(由 ParseHeaderToAidContext 解析): User-Id:用户 ID(必填,校验逻辑会用到) Env-Id:环境/会话 ID Task-Id:任务 ID Bot-Id:Bot ID Request-Id:请求 ID JSON Body(由 tool.RequestParam 解析为 Cha...
12…5
avatar
John Doe
Articles
41
Tags
0
Categories
0
Follow Me
Announcement
This is my Blog
Recent Posts
go-结构体成员Tag2026-03-31
go-结构体核心概念总结2026-03-31
go-切片用法-切片头详解(2/2)2026-03-31
go-结构体指针与返回值类型知识点汇总2026-03-31
go-利用map构建set2026-03-31
Archives
  • March 2026 16
  • February 2026 2
  • January 2026 4
  • December 2025 8
  • November 2025 4
  • October 2025 7
Website Info
Article Count :
41
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By John DoeFramework Hexo 8.0.0|Theme Butterfly 5.5.1