gpt4 book ai didi

go - 为什么这个分配不是类型不匹配?

转载 作者:IT王子 更新时间:2023-10-29 01:45:35 25 4
gpt4 key购买 nike

为什么这不是类型不匹配?

发件人:https://golang.org/ref/spec#Assignability

在以下任一情况下,值 x 可分配给类型 T 的变量(“x 可分配给 T”):...剪...x 的类型 V 和 T 具有相同的基础类型,并且 V 或 T 中至少有一个不是命名类型。...剪断...

是不是因为 N[] 的底层类型是 N[] 而不是命名类型?

背后的原理是什么?

package main

import "fmt"

type N []N

func main() {
n := make([]N, 1)
fmt.Printf("%T\n", n)
fmt.Printf("%T\n", n[0])
n[0] = n
//fmt.Println(n)
}

*Output:*
[]main.N
main.N

最佳答案

你问的是 n[0] = n 是否有效。您已正确识别语言规范中的规则:

A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases:

  • ...
  • x's type V and T have identical underlying types and at least one of V or T is not a named type.

这里是它的应用方式:

  • n[0] 具有类型 N 和基础类型 []N(来自语言规范:“N 在其类型声明中引用").
  • n 的类型为 []N(具有相同的底层类型)。

因此 n[0]n 具有相同的底层类型 ([]N),并且 n 不是命名类型。

关于go - 为什么这个分配不是类型不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33590399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com