美文网首页
如何检测数据类型

如何检测数据类型

作者: 酷走天涯 | 来源:发表于2018-12-27 09:50 被阅读16次

本节我们的要掌握的知识点如下

1.怎么判断一个变量的类型

package main

import "fmt"

func main(){
  var container = []int{1,2,3}
  value,ok := interface{}(container).([]int)
  fmt.Println(value)
  fmt.Println(ok)
}
image.png

value,ok := interface{}(container).([]int)这句代码的含义解释一下

interface{}(container)是把container转换为空接口
.([]int)判断前者的类型是否为切片类型 []int,判断结果赋值给ok,如果是true就将转换后的结果赋值给value,否则将nil赋值给value

下面有一个问题

value:= interface{}(container).([]int) 这句话执行的结果会怎么呢?
如果container 为 []int 类型,那么value就是类型转换后的值
如果container 不是 []int 类型呢? 那么程序就会抛出一个panic 如下截图

image.png

所以一般情况下 我们尽量使用第一种方式进行转换

x.(T) 这个就是类型转换公式,注意几点

1.x必须是接口类型,具体哪个接口类型无所谓,你可能疑惑什么是接口类型,请查阅接口类型
2.interface{} 代表空接口类型, {} 可以表示空的数据块,也可以表示不包含任何内容的数据结构,
比如 struct{} 表示不包含任何方法和字段的的空结构体;[]string{}表示空切片 map[int]string{} 空字典

3.T就做类型字面量,即数据类型,通俗的讲就是用字符表示弄一种数据类型结构


类型转换

T(x)

package main
import "fmt"
func main(){
  value:= int('9')
  fmt.Println(value)
}

猜猜输入是什么?
答案不是9, 57 字符9 转换成数字就是57,比如字符a转换成数字就是98

那么怎么转换成数字了

package main

import (
    "fmt"
    "strconv"
)

func main(){
  value,ok:= strconv.Atoi("9")
  fmt.Println(value)
  fmt.Println(ok)
}

在看一个例子

package main

import (
    "fmt"
    )

func main(){
  var a = 128
  value := int8(a)
  fmt.Println(value)

}

答案是 - 128

解释一下 127 二进制是 01111 1111 ,那么128 就是 1000 0000,第一位是符号位,即负值,那么值为补码 + 1 即 127 + 1 = 128 则值为 - 128


获取值类型的名称

package main

import (
    "fmt"
    "reflect"
)

func main(){
  var a =   128
  typeName := reflect.TypeOf(a)
  fmt.Println(typeName)
}

image.png

相关文章

  • javascript面试题

    数据类型 1.有哪几种数据类型 2.说说基本数据类型和引用数据类型的不同 3.如何检测数据类型 4.如何检测对象,...

  • js类型检测

    如何判断数据类型? 1.使用typeof 检测基本数据类型时没有问题,但是当其对引用类型进行检测时,会返回obje...

  • JS-NO.3

    数据类型检测 4种方式 1:typeof 主要检测基本数据类型 不能具体检测出引用数据类型 2:constru...

  • 20170710笔记

    数据类型检测有4种方法 type of 主要用于基本数据类型检测,不能具体检测出引用数据类型 constructo...

  • 2019-03-19 js practice three

    数据类型检测有4种方法 typeof 主要用来检测基本数据类型,不能具体检测出引用数据类型 constructor...

  • Object.prototype.toString.call检测

    1. 为什么可以检测数据类型 我们知道typeof可以检测数据类型,但是是不准确的,比如 想更准备的检测数据类型可...

  • 如何检测数据类型

    本节我们的要掌握的知识点如下 1.怎么判断一个变量的类型 value,ok := interface{}(cont...

  • js 如何判断数据类型

    本文除了介绍如何检测数据类型,顺带也将数据类型也大概介绍了下参考《JavaSript高级程序设计》、MDN网站等 ...

  • js笔记五十之数据类型检测

    数据类型检测 typeof 用来检测数据类型的运算符 使用typeof检测数据类型, 首先返回的都是一个字符串其次...

  • 数据类型检测

    数据类型检测

网友评论

      本文标题:如何检测数据类型

      本文链接:https://www.haomeiwen.com/subject/ggvpqqtx.html