切片类型的切片

2023-12-26

我目前正在努力通过优秀的围棋之旅 https://tour.golang.org/。 我使用以下解决方案完成了其中一项练习 (#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输入两次(请参阅代码片段中的注释)。这似乎是多余的,但我不知道如何以其他方式做到这一点。


为了明确起见,我们可以使用括号来重写[][]uint8 as []([]uint8):一片(类型的切片uint8).

使用make http://golang.org/doc/go_spec.html#Making_slices_maps_and_channels内置函数,用于类型切片T, make(T, n)返回类型的切片T与长度n和容量n.

所以,make([][]uint8, 2)相当于make([]([]uint8), 2),它返回一个切片,长度和容量为2,类型切片uint8,其中每个切片类型uint8被初始化为零值(anil长度和容量为零的参考)。

多维切片是锯齿状的,类似于多维锯齿状数组 http://en.wikipedia.org/wiki/Jagged_array.

例如,

package main

import "fmt"

func main() {
    ss := make([][]uint8, 2) // ss is []([]uint8)
    fmt.Printf("ss:    %T %v %d\n", ss, ss, len(ss))
    for i, s := range ss { // s is []uint8
        fmt.Printf("ss[%d]: %T %v %d\n", i, s, s, len(s))
    }
}

Output:

ss:    [][]uint8 [[] []] 2
ss[0]: []uint8 [] 0
ss[1]: []uint8 [] 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

切片类型的切片 的相关文章

  • 初始化嵌套匿名结构

    我有一个 json 作为 fields time id status customerId additionalDetail pageInfo start 0 rows 1000 我想将我的结构编组到上面的 json 并创建如下结构 typ
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • Haskell:是的,没有类型类。为什么是整数?

    我有一个关于 GHCi 如何假定整数类型的问题 我正在阅读 Learn you a Haskell 是 否类型的课程 如果您想阅读全文 这里有一个链接 http learnyouahaskell com making our own typ
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • 如何在 Go 中解组具有多个项目的简单 xml?

    我想从以下 xml 中获取人物 People 的一部分
  • 如何在特定文件夹中运行 shell 命令

    我可以用这个out err exec Command git log Output 获取将在与可执行位置相同的路径中运行的命令的输出 如何指定要在哪个文件夹中运行命令 exec Command https golang org pkg os
  • 在 C 中如何将一种类型的变量更改为另一种类型?

    我要做 int main bla bla bla void onetype switch USER INPUT TYPE CASE CONVERT TO CHAR convert onetype VOID TO CHAR gt gt gt
  • 匿名结构和空结构

    http play golang org p vhaKi5uVmm http play golang org p vhaKi5uVmm package main import fmt var battle make chan string
  • 打印到 stdout 会导致阻塞的 goroutine 运行吗?

    作为一个愚蠢的基本线程练习 我一直在尝试实现理发师睡觉的问题 http en wikipedia org wiki Sleeping barber problem在戈兰 对于通道来说 这应该很容易 但我遇到了一个 heisenbug 也就是
  • 如何使 PyCharm 从函数定义中获取类型提示并在文档字符串中填充类型值?

    我总是在函数定义中使用类型提示 例如 def foo a int b str gt bool pass 当我使用 PyCharm 自动文档字符串生成器在代码中生成文档字符串时 我得到以下信息 def foo a int b str gt b
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • 在学术 CS 世界中,“非类型化”是否也意味着“动态类型化”?

    我正在阅读一个幻灯片 上面写着 JavaScript 是无类型的 这与我的想法相矛盾 所以我开始挖掘并尝试了解更多信息 每个答案JavaScript 是一种无类型语言吗 https stackoverflow com questions 9
  • 如何将 int[] 转换为 uint8[]

    所以 我需要你的帮助 我找不到关于该主题的任何内容 Golang 是一门刚刚诞生的语言 所以对于像我这样的新手来说很难快速找到答案 预先声明的 Goint类型大小是特定于实现的 32 位或 64 位 数字类型 http golang org
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • 有队列实现吗?

    任何人都可以建议使用 Go 容器来实现简单快速的 FIF 队列 Go 有 3 种不同的容器 heap list and vector 哪一种更适合实现队列 事实上 如果您想要的是一个基本且易于使用的 fifo 队列 slice 可以满足您所
  • Golang中按长度分割字符串

    有谁知道如何在 Golang 中按长度分割字符串 例如 每 3 个字符分割 helloworld 那么理想情况下它应该返回一个 hel low orl d 数组 或者 一个可能的解决方案是在每 3 个字符后附加一个换行符 所有的想法都非常感
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 直接从一个通道发送到另一个通道

    当从一个通道直接发送到另一个通道时 我偶然发现了令人惊讶的行为 package main import fmt func main my chan make chan string chan of chans make chan chan
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何仅在测试时允许一个包访问另一个包的未导出数据?

    In Go 编程语言 第 11 2 4 节 有一个外部测试访问的示例fmt isSpace 通过声明IsSpace in fmt s export test go文件 这似乎是完美的解决方案 所以这就是我所做的 a a go package

随机推荐

  • Json反序列化,创建重复对象

    展示问题的模型比首先尝试解释它更容易 internal class Program private static void Main string args Class1 class1 new Class1 Name Scott Class
  • 有没有办法在调用构造函数之前设置属性?

    是的 我知道依赖项应该传递给构造函数 我不是在问编码风格或该做什么和不该做什么 我的应用程序中的许多类都与数据库驱动程序类的实例相关联 为此 我使用 PHP 的后期静态绑定创建了一个抽象工厂类 该类的唯一成员是保存驱动程序引用的属性 它看起
  • 目标 C:多名代表

    我很好奇是否以及如何使控制器成为两个不同对象的委托 这是允许的还是像 Java 中的多重继承 假设我想要一个控制器来响应
  • Openshift 上的 Scalatra 应用 - 设置 Jetty IP

    我正在尝试使用 DIY 盒在 Openshift 上部署一个最小的 Scalatra 应用程序 我已经成功让 SBT 正常工作 但是当涉及到container start 我收到错误 FAILED SelectChannelConn ema
  • 如何设置浮动 div 的宽度以占用剩余空间而不将其他 div 向下推?

    对于我想要制作的布局的一部分 我想使用三个 div 所有 div 都彼此相邻浮动 左侧和右侧有一个最大宽度设置 效果很好 但我希望中间的 div 扩大其宽度以填充剩余空间 澄清一下 左右 div 的宽度可以是从 0px 到最大宽度的任何位置
  • 枚举,在 switch case 中使用

    我定义了一个枚举 其中包含方法返回类型 如 String Float List Double 等 我将在 switch case 语句中使用它 例如我的枚举是 public enum MethodType DOUBLE LIST STRIN
  • 在多个故事板文件之间共享场景。 iPhone 与 iPad

    我正在使用故事板开发通用应用程序 我有 2 个故事板文件 一款适用于 iPhone 一款适用于 iPad 我将有一些场景想要在两者之间共享 并且我想使用故事板编辑器来设置它们 常见的是 UITableViewController 及其原型单
  • android:来自片段的菜单项单击事件

    我有一个带有操作栏的应用程序 并且菜单因主要活动而膨胀 我想拦截片段内的点击事件 但我不知道如何 你能帮我吗 主要活动 Override public boolean onCreateOptionsMenu Menu menu getMen
  • 如何使用预测和标准获得不同的结果

    我正在尝试使用 Grails 中的条件加载不同的父级 查询如下 Query def criteria Parent createCriteria results criteria list max params max offset par
  • Google Apps 脚本 JDBC 连接问题

    我在 google apps 脚本中使用 jdbc 连接器连接到任何 mysql 数据库时遇到问题 我正在使用教程代码 var conn Jdbc getConnection jdbc mysql host or ip 3306 datab
  • Windows 10 - System.Speech.Synthesis 无法获取移动版语音

    在我的 Windows 10 语言中 我安装了 2 个英语版本 US 英国 因此 在 设置 gt 时间和语言 gt 语音 中 在 文本转语音 部分下 我可以看到以下选项 微软大卫移动 微软乔治移动 微软苏珊移动 微软榛子移动 微软 Zira
  • 将 PDF 插入 Excel、Python

    我编写了一个 python 脚本 用于创建包含各种计算的电子表格 我想进一步将 pdf 插入电子表格 pdf 是理想的 但 jpeg 也可用 我翻遍了xlwt 没有找到任何东西 谁能建议一种方法来实现这一目标 要实际插入 PDF 您可能只需
  • 为瘦服务器和 sinatra 启用 SSL

    我正在尝试为我的瘦服务器 Web 应用程序启用 SSL 以便它可以通过 HTTPS 运行 我已完成以下操作 启动瘦网络服务器 我的应用程序 运行 主机 gt 127 0 0 1 端口 gt 9090 sslenable gt true ss
  • 使用ADT和SDK管理器,将android源代码附加到eclipse

    安装ADT后 我使用SDK Manager下载最新的android API的源代码 现在 当我运行ADT附带的Eclipse版本时 我仍然看不到android源代码 有没有简单的方法来解决这个问题 打开SDK Manager gt 在api
  • 如何在运行时从 NUnit 测试运行中获取单元测试方法属性?

    我将有关给定测试的各种信息 多个错误跟踪系统的 ID 存储在属性中 如下所示 TestCaseVersion 001 B 8345 X543 public void TestSomethingOrOther 为了在测试过程中获取这些信息 我
  • 如何以编程方式为视图分配 ID?

    在 XML 文件中 我们可以为视图分配一个 ID 例如android id id something 然后打电话findViewById 但是当以编程方式创建视图时 如何分配 ID I think setId 与默认分配不同 setId 是
  • 使用动态而不是反射来按名称调用方法

    使用 NET 4 0 我将如何使用 Dynamic 来完成以下任务而不使用反射 public void InvokeMethod string methodName Type t typeof GCS WebService GCS WebS
  • 如何从为结果启动的活动返回字符串

    我已经启动了结果活动 但如何从该活动返回类似参数的字符串 只需使用以下代码块 Intent intent new Intent intent putExtra RESULT STRING string setResult RESULT OK
  • 通过点击图像(jquery 或 javascript)动态生成地图区域坐标

    我想知道是否有一种方法可以通过单击图像的某些部分来动态生成地图区域坐标 这是为了生成完整的图像图 举个例子 我有这张图片 单击此处查看图像 http mauricio lairet es otr plano jpg 通过单击它 我想为每个定
  • 切片类型的切片

    我目前正在努力通过优秀的围棋之旅 https tour golang org 我使用以下解决方案完成了其中一项练习 45 func Pic dx dy int uint8 pic make uint8 dy type declaration