首页 > 其他分享 >Golang反射type和kind有什么区

Golang反射type和kind有什么区

时间:2023-08-02 22:34:32浏览次数:29  
标签:reflect kind 符号 type Kind Golang 整型 Type TypeOf

一、前言

Go语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 。任意值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeOf 和 reflect.ValueOf 两个函数来获取任意对象的 Value 和 Type。在Go语言程序中,使用 reflect.TypeOf() 函数可以获得任意值的类型对象(reflect.Type),程序通过类型对象可以访问任意值的类型信息。

1.1 Kind和Type区别

相较于 Type 而言,Kind 所表示的范畴更大。类似于家用电器(Kind)和电视机(Type)之间的对应关系。或者电视机(Kind)和 42 寸彩色电视机(Type)Type 是类型。Kind 是类别。Type 和 Kind 可能相同,也可能不同。通常基础数据类型的 Type 和 Kind 相同,自定义数据类型则不同。对于反射中的 kind 我们既可以通过 reflect.Type 来获取,也可以通过 reflect.Value 来获取。他们得到的值和类型均是相同的。

1.1.1 Kind

种类(Kind)指的是对象归属的品种,在 reflect 包中有如下定义:

type Kind uintconst (    Invalid Kind = iota  // 非法类型    Bool                 // 布尔型    Int                  // 有符号整型    Int8                 // 有符号8位整型    Int16                // 有符号16位整型    Int32                // 有符号32位整型    Int64                // 有符号64位整型    Uint                 // 无符号整型    Uint8                // 无符号8位整型    Uint16               // 无符号16位整型    Uint32               // 无符号32位整型    Uint64               // 无符号64位整型    Uintptr              // 指针    Float32              // 单精度浮点数    Float64              // 双精度浮点数    Complex64            // 64位复数类型    Complex128           // 128位复数类型    Array                // 数组    Chan                 // 通道    Func                 // 函数    Interface            // 接口    Map                  // 映射    Ptr                  // 指针    Slice                // 切片    String               // 字符串    Struct               // 结构体    UnsafePointer        // 底层指针)

二、举例说明

import (  "fmt"  "reflect")
type cat struct { name string}
func main() { typeCat := reflect.TypeOf(cat{}) fmt.Println(typeCat.Name(), typeCat.Kind()) var a int typeA := reflect.TypeOf(a) fmt.Println(typeA.Name(), typeA.Kind())}

输出结果:

cat structint int

标签:reflect,kind,符号,type,Kind,Golang,整型,Type,TypeOf
From: https://www.cnblogs.com/cheyunhua/p/17601974.html

相关文章

  • 2.auto、decltype和decltype(auto)的用法
    2.auto、decltype和decltype(auto)的用法1.auto编程时常常需要把表达式的值赋给变量,这就要求声明变量时清楚的知道表达式的类型。然而有些情况是声明的变量的类型我们并不知道,比如在模板编程时。为了解决这个问题,C++11引入了auto类型说明符,用它来让编译器替我们去分析表达式所属......
  • 关于vue中同时使用v-if和nth-of-type时的bug
    问题引出需求:例如我想要在某一个ul元素中使用v-if条件时渲染2个li元素,同时第一个和第二个的样式不同,这里我使用了nth-of-type选择器去设置样式,但是当v-if条件改变时,li元素的样式没有改变,看了下开发者工具,元素对应的选择器没有改变,即使此时仅剩第二个li元素,它仍旧被nth-of-ty......
  • 仅三天,我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目
    目录1.我写了一个超牛的开源项目1.1你看看这性能1.2你看看这功能1.3你猜我这一百天都经历了啥2.你有多久没写并发程序了?3.问:一个WorkerPool程序需要包含哪些功能?4.让GPT-4写第一行代码!4.1我对GPT-4说4.2GPT-4回答4.3我又对GPT-4说4.4GPT-4给出了新的回答4.5......
  • golang json字符串转结构体
    1、不知道结构体类型的情况下funcJsonStringToMap(jsonStrstring)(map[string]interface{},error){//未知值类型m:=make(map[string]interface{})err:=json.Unmarshal([]byte(jsonStr),&m)iferr!=nil{fmt.Printf("Unmarshalwither......
  • 论文解读(APCA)《Adaptive prototype and consistency alignment for semi-supervised d
    [Wechat:Y466551|付费咨询,非诚勿扰]论文信息论文标题:Adaptiveprototypeandconsistencyalignmentforsemi-superviseddomainadaptation论文作者:JihongOuyang、ZhengjieZhang、QingyiMeng论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1介绍......
  • C#基础之Response.ContentType响应内容类型[通俗易懂]
    3、设置响应内容类型改为json类型,效果如下  Response.ContentType1、文本格式:html、xml、txtResponse.ContentType=“text/html“;Response.ContentType=“text/xml”;Response.ContentType=“text/plain”;2、图片格式Response.ContentType=“image/jpg”;R......
  • typescript 快速入门
    1.环境搭建1.1安装安装typescriptyarnaddtypescript-g安装ts-nodets-node是一个在内存中运行的TypeScript运行时,它可以直接运行ts文件,而不需要将ts文件编译成js文件yarnaddts-node-g安装@types/node@types/node是node.js的类型定义文件,......
  • python3 install 其他包 报:ModuleNotFoundError: No module named '_ctypes' 的问题
    python3install其他包报:ModuleNotFoundError:Nomodulenamed'_ctypes'的问题python2import_ctypes没有问题python3import_ctypes报上述错误,说明_ctypes确实无法导入。据网上资料显示时没有安装libdiff库,但使用yum安装后,还需要重新编译python3。但python3好......
  • golang并发编程
    23协程(Goroutine)定义:协程(goroutine)是Go语言中的一种轻量级线程,可以在单个线程中同时执行多个任务。使用方法:在调用函数时gofunction()在函数中使用协程时,需要注意以下几点:协程的执行是异步的,因此需要使用通道等方式进行同步。协程共享内存空间,因此需要使用互斥......
  • Golang基础
    1、GOLANG概述1.1语言特点1.2开发工具1.3相关文档官方编程指南标准库API文档2、规范的代码风格&注释2.1注释&注释风格2.2缩进&空白3、编码4、数据类型4.1基本数据库类型变量常量整型浮点型字符串布尔类型指针基本数据类型零值4.2复合数据类型数......