【问题标题】:Are custom named type's conversions functions or language construct是语言构造的自定义命名类型转换函数
【发布时间】:2021-09-16 02:26:05
【问题描述】:

我找不到此功能的任何特定文档(我在一些代码示例中看到)。

type Event string
type Num int

func main() {
    foo := Event("my event")
    bar := Num(45)
}

Go 是否为每个自定义命名类型动态创建自定义命名函数(转换函数?)?

【问题讨论】:

  • T(x)conversion expressionx := y 是一种声明变量的“好方法”,它被称为short variable declaration
  • 谢谢。那么,这些“转换”不是典型的功能——它们是语言结构吗?我很惊讶它们没有作为变量声明方法被提及。教程只显示“var foo float32 = 2.7”而不是“foo := float32(2.7)”,这就是为什么我迷路了一段时间。
  • 转换与变量声明无关。你可以做fmt.Println(Num(45)) - 这里有一个转换,没有变量声明。

标签: go variables type-conversion declaration


【解决方案1】:

Go 是否动态创建自定义命名函数(转换函数?)

不,这是语言规范定义的转换表达式。

  • Event 是一个defined type,定义为type Event string
  • "my event" 是字符串文字
  • 语法<type>(<expression>)type conversion

显式转换是T(x) 形式的表达式,其中T 是一个类型,x 是一个可以转换为T 类型的表达式。

文字是一个常量表达式(只有一个操作数)。

如果x 可以用T 的值表示,则常量值x 可以转换为类型T

字符串文字"my event" 是否可以用Event 值表示?是的,因为Event 的底层类型是string

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多