类型声明

概述

API 的类型声明和 Golang 的类型声明非常相似,但是有一些细微的差别,接下来我们来看一下 API 的类型声明吧。

类型声明

在 API 描述语言中,类型声明需要满足如下规则:

  1. 类型声明必须以 type 开头
  2. 不需要声明 struct关键字
  3. 不支持嵌套结构体声明
  4. 不支持别名

示例

  1. type StructureExample {
  2. // 基本数据类型示例
  3. BaseInt int `json:"base_int"`
  4. BaseBool bool `json:"base_bool"`
  5. BaseString string `json:"base_string"`
  6. BaseByte byte `json:"base_byte"`
  7. BaseFloat32 float32 `json:"base_float32"`
  8. BaseFloat64 float64 `json:"base_float64"`
  9. // 切片示例
  10. BaseIntSlice []int `json:"base_int_slice"`
  11. BaseBoolSlice []bool `json:"base_bool_slice"`
  12. BaseStringSlice []string `json:"base_string_slice"`
  13. BaseByteSlice []byte `json:"base_byte_slice"`
  14. BaseFloat32Slice []float32 `json:"base_float32_slice"`
  15. BaseFloat64Slice []float64 `json:"base_float64_slice"`
  16. // map 示例
  17. BaseMapIntString map[int]string `json:"base_map_int_string"`
  18. BaseMapStringInt map[string]int `json:"base_map_string_int"`
  19. BaseMapStringStruct map[string]*StructureExample `json:"base_map_string_struct"`
  20. BaseMapStringIntArray map[string][]int `json:"base_map_string_int_array"`
  21. // 匿名示例
  22. *Base
  23. // 指针示例
  24. Base4 *Base `json:"base4"`
  25. // 新的特性( goctl >= 1.5.1 版本支持 )
  26. // 标签忽略示例
  27. TagOmit string
  28. }
类型声明 - 图1tip

API 新特性使用可参考新版 API 解析器使用

我们暂时不支持泛型、弱类型,如 any 类型

可以参与 discussion 讨论说出你的看法 https://github.com/zeromicro/go-zero/discussions/3121