登录
首页 >  Golang >  Go问答

切片类型

来源:Golang技术栈

时间:2023-04-29 10:42:32 345浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《切片类型》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我目前正在努力完成出色的Tour of Go。我使用以下解决方案完成了一项练习(#45):

func Pic(dx, dy int) [][]uint8 {
    pic := make([][]uint8, dy) /* type declaration */
    for i := range pic {
        pic[i] = make([]uint8, dx) /* again the type? */
        for j := range pic[i] {
            pic[i][j] = uint8((i+j)/2)
        }
    }
    return pic
}

我不明白为什么我必须使用make该类型的语句uint8两次(请参阅片段中的注释)。这似乎是多余的,但我无法弄清楚如何以其他方式做到这一点。

正确答案

在 Go 中没有其他方法可以做到这一点。

是的,我同意它很冗长,但很有必要。第二个 make() 语句完全独立于第一个。可以说编译器应该能够从 推断类型pic[i],但目前还不能。

还有一点:如果你在第二种情况下省略了类型,make() 语句会是什么样子?make() 仍然需要进行实际分配并能够指定所需的长度/容量。

作为旁注,您混淆了切片长度。练习表明顶层切片应该有 length dy,而不是dx你在代码中输入的那样。

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>