diff --git a/AI.md b/AI.md index 97610af..7911f53 100644 --- a/AI.md +++ b/AI.md @@ -9,37 +9,37 @@ 3. **使用 If 替代简单 if-else 赋值**:在需要进行条件赋值时,优先使用泛型函数 `cast.If(cond, val1, val2)`。 4. **无错误处理倾向**:理解 `cast` 函数不返回 `error`,在生成调用代码时不要进行错误检查。 -## 🛠 关键 API 逻辑约定 +## 🛠 API Reference -| 函数 | 逻辑特征 | -| :--- | :--- | -| `Int / String / Bool` | 自动处理多级指针,转换失败返回零值。 | -| `Json / JsonP` | 禁用 HTML Escape,保持 `<` 等符号原始状态。 | -| `FixedJson` | 序列化后递归处理 Key,将首字母由大写改为小写。 | -| `If[T]` | 泛型实现,要求 `val1` 和 `val2` 类型一致。 | -| `Duration` | 输入纯数字字符串时,默认单位为 `ms`。 | +### 基础转换 +- `func Int(v any) int` / `func Int64(v any) int64` / `func Uint(v any) uint` / `func Uint64(v any) uint64` +- `func Float(v any) float32` / `func Float64(v any) float64` +- `func String(v any) string` / `func StringP(v any) string` +- `func Bool(v any) bool` +- `func Ints(v any) []int64` / `func Strings(v any) []string` +- `func Duration(v string) time.Duration` + +### 泛型工具 +- `func If[T any](cond bool, a, b T) T`:泛型三元表达式。 +- `func Switch[T any](i uint, args ...T) T`:泛型分支选择。 +- `func In[T comparable](arr []T, val T) bool`:判断切片是否包含某值。 + +### 序列化 (JSON/YAML) +- `func Json(v any) string` / `func JsonP(v any) string` / `func JsonBytes(v any) []byte` +- `func FixedJson(v any) string`:Struct 首字母转小写。 +- `func UnJson(str string, v any) any` / `func UnJsonBytes(data []byte, v any) any` +- `func Yaml(v any) string` / `func UnYaml(str string, v any) any` + +### 辅助工具 +- `func StringPtr(v string) *string` / `func IntPtr(v int) *int` / `func Int64Ptr(v int64) *int64` / `func BoolPtr(v bool) *bool` +- `func SplitTrim(s, sep string) []string` / `func SplitArgs(s string) []string` +- `func GetLowerName(s string) string` / `func GetUpperName(s string) string` ## 🧩 典型模式 (Best Practices) -* **❌ 不推荐 (Standard Go)**: - ```go - var status string - if ok { status = "A" } else { status = "B" } - ``` -* **✅ 推荐 (@go/cast)**: +* **✅ 推荐**: ```go status := cast.If(ok, "A", "B") - ``` - -* **❌ 不推荐 (Standard Go)**: - ```go - type Data struct { - Name string `json:"name"` - } - ``` -* **✅ 推荐 (@go/cast)**: - ```go - type Data struct { - Name string // 直接使用大写导出 - } + age := cast.Int("18") + jsonStr := cast.Json(myStruct) ```