Go语言 ak和am是两种不同的类型,为什么可以赋值[duplicate]

z31licg0  于 2023-03-16  发布在  Go
关注(0)|答案(1)|浏览(124)

此问题在此处已有答案

Assignment between custom slice type and the underlying type(1个答案)
Why can I assign a value of different type to a variable?(1个答案)
2天前关闭。
ak和am是两种不同的类型,为什么可以赋值

package main

import (
    "fmt"
)
type ar [3]int

func main() {
    var ak ar
    am := [3]int{4, 5, 6}
    ak = am// different type
    fmt.Printf("ak %T,am,%T", ak, am)
}

为什么两种不同的类型可以相互赋值

kg7wmglp

kg7wmglp1#

因为两个类型都有 * 相同 * 的底层类型,而am的类型是未命名,并且这个事实满足规范的Assignability部分中列出的条件之一,具体来说就是:

  • V和T具有相同的基础类型,但不是类型参数,并且V或T中至少有一个不是命名类型。

相关问题