Go 当x不可分配给T时,为什么可以将非常量值x转换为类型T?

Go 当x不可分配给T时,为什么可以将非常量值x转换为类型T?,go,Go,根据Go规范,如果x可分配给T,则非常量值x可转换为类型T(第7条规则中的第一条) 给定以下2个代码: 成功转换: 未能将x分配给T(与上述x和T相同): 为什么可以将x转换为T,而x不能分配给T 这是因为第二条转换规则“忽略结构标记,x的类型和T的基础类型相同”,但这条规则不只是与结构相关吗?(我可能被我在规范和其他地方看到的示例误导了…。是的,这是因为这条规则,不,这不仅仅是结构。“x的类型和T有相同的基础类型”没有提到结构,只提到类型。好的,很高兴知道,谢谢:) type T int va

根据Go规范,如果x可分配给T,则非常量值x可转换为类型T(第7条规则中的第一条)

给定以下2个代码:

  • 成功转换:
  • 未能将x分配给T(与上述x和T相同):
  • 为什么可以将x转换为T,而x不能分配给T


    这是因为第二条转换规则“忽略结构标记,x的类型和T的基础类型相同”,但这条规则不只是与结构相关吗?(我可能被我在规范和其他地方看到的示例误导了…。

    是的,这是因为这条规则,不,这不仅仅是结构。“x的类型和T有相同的基础类型”没有提到结构,只提到类型。好的,很高兴知道,谢谢:)
    type T int
    var x int
    _ = T(x)
    
    type T int
    var x int
    var t T = x