类型声明
概述
API 的类型声明和 Golang 的类型声明非常相似,但是有一些细微的差别,接下来我们来看一下 API 的类型声明吧。
类型声明
在 API 描述语言中,类型声明需要满足如下规则:
- 类型声明必须以
type开头 - 不需要声明
struct关键字
示例
type StructureExample {// 基本数据类型示例BaseInt int `json:"base_int"`BaseBool bool `json:"base_bool"`BaseString string `json:"base_string"`BaseByte byte `json:"base_byte"`BaseFloat32 float32 `json:"base_float32"`BaseFloat64 float64 `json:"base_float64"`// 切片示例BaseIntSlice []int `json:"base_int_slice"`BaseBoolSlice []bool `json:"base_bool_slice"`BaseStringSlice []string `json:"base_string_slice"`BaseByteSlice []byte `json:"base_byte_slice"`BaseFloat32Slice []float32 `json:"base_float32_slice"`BaseFloat64Slice []float64 `json:"base_float64_slice"`// map 示例BaseMapIntString map[int]string `json:"base_map_int_string"`BaseMapStringInt map[string]int `json:"base_map_string_int"`BaseMapStringStruct map[string]*StructureExample `json:"base_map_string_struct"`BaseMapStringIntArray map[string][]int `json:"base_map_string_int_array"`// 匿名示例*Base// 指针示例Base4 *Base `json:"base4"`// 新的特性( goctl >= 1.5.1 版本支持 )// 标签忽略示例TagOmit string}
tip
API 新特性使用可参考新版 API 解析器使用
我们暂时不支持泛型、弱类型,如 any 类型
可以参与 discussion 讨论说出你的看法 https://github.com/zeromicro/go-zero/discussions/3121