Go基础-程序实体补充

一些关于判断变量类型与类型转换、不同类型之间的比较

一、如何判断变量类型

断言

下面是例子代码:

import (
    "fmt"
)
func main() {
    var name = "icode"
    value, ok := interface{}(name).(string)
    fmt.Println(value)
    fmt.Println(ok)
}

注意:类型断言的时候我们必须先转换为接口类型

  • 在Go语言中interace{} 代表空接口,任何类型都是它的实现类型

  • 一对不包含任何东西的花括号,除了可以代表空的代码块之外,还可以用于表示不包含任何内容的数据结构(或者说数据类型)

  • 如:struct{},它就代表了不包含任何字段和方法的、空的结构体类型

  • 空接口interface{}则代表了不包含任何方法定义的、空接口类型

  • 字面量:用来表示数据类型本身的若干个字符

二、关于string类型和各种切片类型的互转

  • 一个值从string类型向[]byte类型转换时代表UTF-8编码的字符串被拆分成独立的字节

  • 一个值从string类型向[]rune类型转换的时候代表着字符串会被拆分成一个个Unicode字符

三、别名类型VS 潜在类型

我们可以通过下面方式声明:

type MyString = string

这样MyString 就是string类型的别名类型

在Go内建的基本类型中就存在两个别名类型:byte是uint8的别名类型,而rune是int32的别名类型

而下面这种声明方式:

type MyString string

这里MyString和string就不是一种类型了,这种方式叫做对类型的再定义

我们可以把string是MyString的潜在类型

潜在类型的含义:某个类型在本质上是哪个类型,或者是哪个类型的集合。

如果两个值的潜在类型相同,却属于不同的类型,它们之间是可以做类型转换的。但是它们的值不能进行判断等或比较,它们变量之间不能赋值

全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务