浅谈go语言中别名类型的使用

 更新时间:2024年01月07日 16:00:56   作者:ldxxxxll  
类型别名是 Go 1.9 版本添加的新功能,主要用于解决代码升级、迁移中存在的类型兼容性问题,本文主要介绍了go语言中别名类型的使用,感兴趣的可以了解一下

什么是别名类型

我们可以用关键字 type 声明自定义的各种类型,类似:

type People struct {
	name string
	age  int
}

当然了,这些类型必须在 Go 语言基本类型和高级类型的范畴之内。

在它们当中,有一种被叫做 ”别名类型” 的类型。我们可以像下面这样声明它:

type stringAlias = string

这条声明语句表示,stringAlias 是 string 类型的别名类型。顾名思义,别名类型与其源类型的区别恐怕只是在名称上,它们是完全相同的。我们完全可以使用以下代码测试:

func func10() {
	var s1 stringAlias = "2"
	v, ok := interface{}(s1).(string)
	fmt.Println(ok)
	fmt.Println(v)
	fmt.Println(reflect.TypeOf(s1))
}

output:

true
2
string

从代码结果来看,stringAlias 以及 string 实际上就是同一种类型。

延伸

如果我们这么定义呢?

type stringAlias1 string

还是使用上面的例子进行测试:

func func11() {
	var s1 stringAlias1 = "2"
	v, ok := interface{}(s1).(string)
	fmt.Println(ok)
	fmt.Println(v)
	fmt.Println(reflect.TypeOf(s1))
}

output:

false

main.stringAlias1

我们可以从输出看出来,这里的 stringAlias1 和 string 是完全两种类型。这种我们叫类型的重定义。

到此这篇关于浅谈go语言中别名类型的使用的文章就介绍到这了,更多相关go 别名类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go 语言下基于Redis分布式锁的实现方式

    Go 语言下基于Redis分布式锁的实现方式

    本篇文章将详细介绍如何正确地实现Redis分布式锁,下面通过一个项目基于 Redis 的分布式锁能够提供哪些分布锁特性,本文给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • 一文详解Golang中的切片数据类型

    一文详解Golang中的切片数据类型

    这篇文章主要介绍了一文详解Golang中的切片数据类型,切片是一个种特殊的数组。是对数组的一个连续片段的引用,所以切片是一个引用类型
    2022-09-09
  • go-micro微服务domain层开发示例详解

    go-micro微服务domain层开发示例详解

    这篇文章主要为大家介绍了go-micro微服务domain层开发示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Golang开发动态库的实现

    Golang开发动态库的实现

    这篇文章主要介绍了Golang开发动态库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • golang panic及处理机制

    golang panic及处理机制

    Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱,今天给大家介绍golang panic及处理机制,需要的朋友参考下吧
    2021-08-08
  • Go语言小白入门刷题打印输出沙漏

    Go语言小白入门刷题打印输出沙漏

    这篇文章主要介绍了Go语言刷题打印输出沙漏的示例过程详解,非常适合刚入门Go语言的小白学习,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Go实现跨平台的蓝牙聊天室示例详解

    Go实现跨平台的蓝牙聊天室示例详解

    这篇文章主要为大家介绍了Go实现跨平台的蓝牙聊天室示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • go连接kafka的实现示例

    go连接kafka的实现示例

    本文主要介绍了go连接kafka的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Go语言面向对象中的多态你学会了吗

    Go语言面向对象中的多态你学会了吗

    面向对象中的多态(Polymorphism)是指一个对象可以具有多种不同的形态或表现方式,本文将通过一些简单的示例为大家讲解一下多态的实现,需要的可以参考下
    2023-07-07
  • GOLANG使用Context实现传值、超时和取消的方法

    GOLANG使用Context实现传值、超时和取消的方法

    这篇文章主要介绍了GOLANG使用Context实现传值、超时和取消的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论