前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据类型的判断

数据类型的判断

作者头像
酷走天涯
发布2019-06-11 16:35:38
9020
发布2019-06-11 16:35:38
举报

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档