自定义类型传递给函数作为参数

自定义类型传递给函数作为参数,第1张

自定义类型传递给函数作为参数
Integer
int

int
您的新类型
Integer
是2种不同的不同类型。在
Integer
预期的地方,您必须传递type的值
Integer

如果有

Integer
值,则可以使用简单的类型转换将其设为type的值
int
,因为的基础类型
Integer
int

var i Integer = 5nf(int(i))

同时可能令人困惑和有趣的是,您可以不经过转换就传递未类型的常量

nf(5)

在Go Playground上尝试一下。

原因是在规范中:可分配性:

在以下任何一种情况下,值

x
都可以 分配 给类型的变量
T
(“
x
可以分配给
T
”):

[…]

  • x
    是可由type值表示的无类型常量
    T


5
是一个无类型的常量,可以用type的值表示,
int
因为该无类型的常量
5
具有默认类型
int
,所以它可以用type的值
Integer
(具有相同的默认类型)表示。

如果您检查其他可分配性规则(上面的报价中未包括),则它们都不与尝试为

Integer
类型的参数传递值的情况匹配
int
,因此不允许这样做。

请参阅相关问题:Golang:创建常量类型并限制类型的值

RuneFunc
func(rune) rune

此案例与上一个案例(

Integer
int
)之间的区别在于,它
int
是命名类型,
func(rune)rune
不是。

有一个可分配性规则允许这样做:

*

x
的类型,
V
并且
T
具有相同的基础类型,并且至少是
V
T
不是命名类型。

因此,在这种情况下:

var f RuneFuncff(f)

f
是一个命名的类型,但是参数类型
ff()
就是
func(rune) rune
它是无名的,所以转让是允许的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5125464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存