首页 > 其他分享 >类型定义与类型别名区别

类型定义与类型别名区别

时间:2022-09-22 18:26:08浏览次数:64  
标签:string 区别 int 别名 类型定义 myInt 类型 type

目录

类型定义

语法格式

// 单个定义
type NewTypeName SourceType

// 多个定义
type (
    NewTypeName1 sourceType1
    NewTypeName2 sourceType2
)

注意事项

一个新定义的类型与它的源类型为两个不同的类型
// 自定义类型
type myInt int

func typName() {
	fmt.Printf("myInt = %v, int = %v\n", reflect.TypeOf(myInt(1)), reflect.TypeOf(int(1)))
	// output:
	// myInt = main.myInt, int = int
}
一个新定义的类型和它源类型得底层类型一致,并且他们的值可以显示转换
// 自定义类型
type myInt int

func typTransfer() {
	var a int
	var b myInt
	a = 1
	b = myInt(a)
	fmt.Printf("a = %d, b = %d\n", a, b)
	// output:
	// a = 1, b = 1
}
类型的定义可以出现在函数体类
func typeFun() {
	type funInt int
	var c funInt = 1

	fmt.Printf("c = %d, c type is %v\n", c, reflect.TypeOf(c))
	// output:
	// c = 1, c type is main.funInt
}

类型别名

语法格式

type (
    Name = string
    Age = int
)

type table = map[string]int
type Table = map[Name]Age

注意事项

类型别名与源类型是同一种类型
// 类型别名
type myStr = string

func aliasType() {
	var s myStr
	var ts string

	fmt.Printf("s type is %v, ts type is %v\n", reflect.TypeOf(s), reflect.TypeOf(ts))
	// output:
	// s type is string, ts type is string
}

标签:string,区别,int,别名,类型定义,myInt,类型,type
From: https://www.cnblogs.com/dxx99/p/16720372.html

相关文章

  • String 和 StringBuffer 的区别(及StringBuffer的常用方法)
    String和StringBuffer的区别(及StringBuffer的常用方法)对比StringStringBuffer对象是否可变String创建的对象是不可变的,一旦创建不可改变StringBuffer创建......
  • MySQL存储引擎中的MyISAM和InnoDB区别详解
    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(IndexedSequentialAccessMethod:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transacti......
  • MyISAM与InnoDB 的区别(9个不同点)
    区别:1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2.InnoDB......
  • WCF和ASMX Web服务之间有什么区别
    https://m.imooc.com/wenda/detail/586470https://www.cnblogs.com/xwc1996/p/9813728.html(我能看懂的一个wcf介绍)ASMXWeb服务只能由HTTP(带有.asmx的传统Web服务)调用......
  • PostgreSQL与Greenplum之区别
    一、区别:(1)Greenplum是用于报告、分析、机器学习、人工智能和高并发SQL的大规模并行数据库的开源软件。Greenplum以PostgreSQL为基础,Greenplum数据库被描述为以MP......
  • IPv4和IPv6的区别
     IPv4IPv6地址格式长度为32位,8位一组,中间由(,)间隔,地址由长度为32位(4个字节)。地址由网络和主机部分组成,这取决于地址类。根据地址的前几位,可定义各种地址类:A.B、C......
  • redis分布式锁,redis中set和setnx的区别
    转自:https://www.zhangshilong.cn/work/320344.html Redis命令SETNX的使用(包含Java分布式锁实现)可以参考Redis官网对SETNX命令的介绍:https://redis.io/commands/setnx......
  • js和jQuery的区别(超级详细)
    1概念1.1js概念JavaScript是用于Web客户端开发的脚本语言。1.2jQuery概念jQuery是一个快速、简洁的JavaScript库,极大的简化了javascript编程。jQuery是js的框架,基......
  • centos6 和centos7 的区别
    内核:centos7是3.10centos6是2.6文件系统:centos6是ext4centos7是xfs硬盘默认调度算法6默认使用cfq7默认使用的是deadline算法防火墙6iptables7firealld......
  • 长度单位px、em和rem的区别是什么?
    px是固定像素,一旦设置就无法因适应页面大小改变em,rem都是相对长度单位,适用于响应式布局em是相对于父元素设置字体大小,一般都是以body中的font-size为基准(浏览器中......