
前提:为了简化数据类型,go支持自定义数据类型基本语法:type自定义数据
博客园 2023-06-24 11:17:26
前提:为了简化数据类型,go支持自定义数据类型
基本语法:
【资料图】
type 自定义数据类型名 数据类型 //相当于取一个别名
eg: type myint int //这时myint就等价于int来使用了
eg:type mySum func(int, int) int /这时mySum就等价一个函数类型func(int, int) int
//给int取一个别名,在go中,myInt和int虽然都是int类型,但go认为myInt和int是两个类型type myInt intvar num myIntvar num2 intnum = 22num2 = int(num) //注意:这里依然需要显示转换,go认为myInt和int是两个类型fmt.Printf("num的值为%v, num2的值为%v\n", num, num2)
问题描述:由上可知,既然go认为myInt和int是两个类型,那么下面定义的myfunc与func(int,int)int也是两个类型。
那么在使用myfunc作为形参类型时,为什么在传参数a的时候不提示参数类型不匹配??
1 type myfunc func(int,int)int //自定义函数数据类型 2 3 func sum(n int,m int) int{ 4 return n+m 5 } 6 7 func sum2(funvar myfunc, a int, b int )int{ //作为形参funvar函数类型为myfunc 9 return funvar(a,b)10 }11 func main(){ 12 a :=sum 14 fmt.Printf("a+b=%d\n",sum2(a,1,2)) //所传递的 a的数据类型为func(int,int)int15 }
结论:
在Go语言中,函数类型的参数是一种抽象的类型,它描述了函数的签名(参数类型和返回类型),而不是具体的函数实现。因此,在声明函数类型时并不会指定参数的具体类型。
当定义一个函数类型 myfunc
为 func(int, int) int
时,它表示该函数类型接受两个 int
类型的参数,并返回一个 int
类型的结果。这个类型可以用来声明变量或作为函数的参数或返回值。
然而,当你使用函数类型 myfunc
的变量或将其作为参数传递时,编译器并不会对参数的具体类型进行检查。这是因为函数类型是一种抽象的概念,可以被用于表示多个具体类型的函数。
例如,你可以将满足相同签名的具体函数赋值给 myfunc
类型的变量,因为它们的参数和返回类型匹配。编译器只会检查函数类型的签名是否匹配,而不会进一步检查参数的具体类型。
因此,在传递参数时,Go编译器不会提示参数类型不同的错误,因为函数类型的参数是抽象的,可以接受多种具体类型的函数。如果你需要确保传递的参数类型与函数类型的参数匹配,你需要在代码中进行显式的类型检查和转换。
前提:为了简化数据类型,go支持自定义数据类型基本语法:type自定义数据
黄轩因为家庭的关系,加上自己不爱学习,在班里成绩一直都是倒数第二名
大家办理社保卡的时候,一定要注意厦门社保卡照片要求几寸。必须要保证
2023年度考核表个人工作总结篇1 一、政冶思想方面 认真学习党的
尼山论“见”,百家争鸣。互联网领域的“论见”要看一年一度的世界互联
1、每个键盘都不一样的,我的雷柏v500rgb,用雷柏V键其实就是FN键加F区
今天来聊聊狮子弱什么属性,海贼王剧场版金狮子那集叫什么的文章,现在
1、不上班的,按国家规定时间上下班。2、事业单位。本文到此分享完毕,
中国报告大厅2023年6月23日河南省煤质柱状活性炭价格最新走势监测显示
1、空调除湿一样要关门窗,门窗不关的话就会延长抽湿的时间,时间长了
1、第一天:胸部练习,平板卧推练习,4组,12个 组;俯卧撑练习,4组,
1、词目秋高气爽发音qiūgāoqìshuǎng释义形容秋季晴空万里,天气清
1、新造词是指利用原有的语言材料,按照原有的构词方式构成的,采用新
扫雪机概念有哪些股票?(2023 6 23),扫雪机概念有哪些股票?润邦股份
地方本科院校毕业生是最难就业的群体,原因在于,这些地方本科院校以学