kind type

reflect 包提供了两个重要的结构 - Type 和 Value。



Type 是一个 Go 中任何类型的代表。换句话说,它可以被用于编码任何 Go 类型(例如:int , string , bool , myCustomType 等等)。Value 是一个 Go 中任何值的代表。换句话说,它可以被用于编码、操作任何 Go 的值。



ype example struct {
field1 type1
field2 type2
}
这个结构体的一个对象的 type 应该是 example。而这个对象的 kind 应该是 struct。这里的 Kind 可以被看成一个 Type 的 Type。



在 Go 里所有 structs 都是相同的 kind,但不是相同的 Type



像 Pointer、Array、Slice、Map 等等复杂类型,使得 type 和 kind 的含义产生了这样的差异。



相比之下,像 int、float、string 等等原始类型,并没有产生 type 和 kind 含义上的差别。换句话说,一个 int 变量的 kind 是 int。一个 int 变量的 type 也是 int。



https://studygolang.com/articles/12434

类型是程序员定义的关于数据和函数的元数据。种类是编译器和运行时定义的关于数据和函数的元数据。



运行时和编译器根据 Kind 来分别给变量和函数分配内存或栈空间。



Type 类型的变量的 String() 方法将返回 Type 的全路径名称。例如, 如果 VersionType 定义在 mypkg 包中,String() 返回的值将为 mypkg.VersionType。



通过复合种类创建复合对象
复合种类是包括有其他种类的种类。Map,Struct,Array 等,都是复合种类。下面是复合种类的列表:



Array
Chan
Func
Interface
Map
Ptr
Slice
Struct



https://studygolang.com/articles/12526



Category golang