当前位置: 首页 > 知识库问答 >
问题:

切片的零值不是零

高增
2023-03-14

我就是这样做的https://tour.golang.org/moretypes/10我修改了代码,希望得到相同的结果。我没有。这是错误还是文档错误?美国之旅

nil片的长度和容量为0。

我的y变量的长度和容量为0。

package main

import "fmt"

func myPrint(z []int) {
    fmt.Println(z, len(z), cap(z))
    if z == nil {
        fmt.Println("nil!")
    }
}

func main() {
    var z  []int 
    y := []int {}
    myPrint(z)
    myPrint(y)
}

这是我的输出。

[] 0 0
nil!
[] 0 0

我还以为会有第二个“零”~为什么我没拿到?

暂时还没有答案

 类似资料:
  • 问题内容: 我按照示例https://tour.golang.org/moretypes/10 进行了修改,希望得到相同的结果。我没有。这是错误还是文档错误?巡回演出 无切片的长度和容量为0。 我的y变量的长度和容量为0。 这是我的输出。 我期待第二个“零”〜我为什么不明白呢? 问题答案: 您参考的文档指出 零个切片的长度和容量为0, 但并非 每个 长度和容量为零的切片都是零个切片。规范仅说 未初

  • 问题内容: 我正在处理通过numpy.array()创建的数组,我需要在画布上绘制模拟图像的点。由于包含有意义数据的数组中心部分周围有很多零值,因此我想“修剪”该数组,删除仅包含零的列和仅包含零的行。 因此,我想了解一些本机numpy函数,甚至是要“修剪”的代码片段,或者找到“边界框”以仅对数组中包含数据的部分进行切片。 (因为这是一个概念性问题,所以我没有放置任何代码,如果可以的话,抱歉,我非常

  • 问题内容: 在Golang中,我试图为我的旅行推销员问题创建一个加扰切片函数。在执行此操作时,我注意到当我开始编辑切片时,每次传递时,我赋予的加密功能都是不同的。 经过一些调试后,我发现这是由于我在函数内部编辑了切片。但是既然Golang被认为是一种“价值传递”的语言,那怎么可能呢? https://play.golang.org/p/mMivoH0TuV 我提供了一个游乐场链接来显示我的意思。通

  • 在Go中,和之间有什么区别? 我发现两者都有效,但哪一个更好?

  • 问题内容: 在Golang中,和之间有什么区别? 我发现这两种方法都可行,但是哪一种更好? 问题答案: 除了fabriziom的答案外,您还可以在“转到切片:用法和内部方法”中看到更多示例,其中提到了的用法: 由于slice()的零值就像 零长度的slice一样 ,您可以声明slice变量,然后在循环中附加到该变量: 这意味着,要附加到切片,您不必先分配内存:切片足以作为要添加的切片。

  • 我读过一些关于零片和空片的文章。我相信我对他们之间的差异有一些基本的了解。 我的理解总结:是nil片和返回;而是空片和 然而,这个特殊的例子仍然困扰着我。 请查看下面的链接以获取代码。我的问题是最后两个案例。https://play.golang.org/p/udyHoOlSeP 假设我想比较两个片段,重命名类型和接口匹配以及所有。接收机可以是,即使未定义为按值复制;虽然参数是按值复制的,但只要参