如何使用golang中通过引用传递的索引访问切片中的元素

2024-05-08

我将切片的引用传递给函数,并且我正在函数内的切片中进行更改。我还尝试使用索引访问切片中的元素。它在 golang 中抛出异常。通过引用传递的索引访问切片中的元素的最佳方法是什么? 您可以在此处找到示例代码。 [参考:http://www.reddit.com/r/golang/comments/283vpk/help_with_slices_and_passbyreference/ http://www.reddit.com/r/golang/comments/283vpk/help_with_slices_and_passbyreference/]。由于我的代码很大,所以我添加了一个示例。

package main

import "fmt"

type mystruct struct {
    val int
}

func main() {
    var s1 []mystruct
    var s2 []mystruct

    onlyPassing(&s1)
    s2 = returningToo(s2)

    fmt.Printf("%#v\n%#v", s1, s2)
}

func onlyPassing(s *[]mystruct) {
    *s = append(*s, mystruct{1})
    m := *s[0]

}

func returningToo(s []mystruct) []mystruct {
    s = append(s, mystruct{1})
    return s
}

你可以找到实现here http://play.golang.org/p/il4Lt_RRHy。谁能帮我解决这个问题。


索引运算符不会自动取消引用指针。您需要使用括号来指定取消引用的内容。

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

如何使用golang中通过引用传递的索引访问切片中的元素 的相关文章

随机推荐

  • Laravel 5 中的注册服务在哪里?

    我在用户表中添加了几个字段 在我读到的所有地方都说我还需要更新中的新字段app Services Registrar php文件 但我找不到Services文件夹在任何地方 这是 Laravel 5 中的新安装 这是我的目录结构的屏幕截图
  • 加载器如何引用共享库中的变量?

    我现在了解如何通过过程链接表引用动态函数 如下所示 Dump of assembler code for function foo plt 0x0000000000400528
  • 为应用程序启用主题

    我有一个旧的应用程序 在Win XP中的delphi 7中启动 现在我正在使用delphi 2009 win Vista 如果我开始一个新项目 所有按钮都有一个圆形边缘 但在我的旧应用程序中 所有按钮都有 方形 形状的外观 有什么设置我错过
  • 安装了 Resharper,现在立即窗口中没有自动代码提示

    我已经习惯使用 ReSharper 因此无法卸载它 然而 我想尝试修复的一件小事是立即窗口 例如 当我键入 myObject 时 我会收到自动智能提示 自从我安装了 ReSharper 以来 这似乎不再起作用 并且仅在调试时在即时窗口中起作
  • GitHub Web UI 中的“base”和“head”存储库是什么?

    GitHub 的 UI 相当不直观且考虑不周 所以这里有一个问题 什么是 头 回购 什么是 基础 回购 不知道是从哪一个抄来的 基础 和 头部 这两个词的意思是相同的 链表的 头 类似于树的 基 GitHub 有叉树和文件树 Head 和
  • 去掉密码确认;设计

    我在 Rails 3 2 6 应用程序中使用 devise 进行身份验证 我有password confirmation首先 但现在我想删除它 该怎么做呢 你只需要删除password confirmation您表单中的字段 More in
  • HTTP 错误 500.19 - 无法读取配置文件

    在我的一个 ASP NET 应用程序中 由于下面显示的错误 我突然无法在 Visual Studio 2013 中运行它 它似乎正在尝试从甚至不存在的路径打开 web config 我的所有项目代码 包括 web config 都位于 C
  • 如何在具有动态高度的固定 div 标题后设置 div 内容样式

    以下情况 div style width 100 place holder for header div div style width 100 margin top 100px content div 我需要标题始终可见且位于顶部 因此该
  • 如何仅提取 mysql 和 php 中具有非零值的列?

    我正在尝试从 mysql 数据库中提取并显示在网页上 仅非零列 哪一列的日期是 0000 00 00 我不想在网页上显示这些列 下面分别是HTML代码和php脚本
  • “使用命名空间 std::literals”安全吗?

    一般来说 using namespace在全球范围内是被认为是一种不好的做法 https stackoverflow com questions 1452721 why is using namespace std considered b
  • Foreach 更改未保留在 Linq 项目集合上

    在以下示例中 当我返回集合时 不会保留在 foreach 中应用的更改 var people SomeLinqToSqlSource foreach var person in people person Name Jimmy return
  • 克隆存储库时出现 Git 冲突复制错误

    我使用 dropbox 作为 git 存储库 现在由于同步中的一些问题 git 中存在一些冲突的副本 我该如何消除这种冲突 由于这种冲突 我无法克隆该存储库的内容 我在克隆存储库时遇到的错误是 Git 致命 参考格式无效 refs head
  • 如何选择使用默认命名空间的节点?

    XML 文件的结构大致如下 a b b a
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • GTK 滚动窗口 - 将滚动条保持在底部

    我有一个使用 ScrolledWindow 的 GTK C 程序 我不断将数据添加到滚动窗口内的列表中 并且我想将注意力集中在最新的项目上 但我还想允许用户滚动数据以选择旧项目 有没有办法做到这一点 我到处都找过了 但什么也没找到 我不太清
  • 捕获异常:除以零

    当我尝试除以 0 时 以下代码不会捕获异常 我是否需要抛出异常 或者计算机是否在运行时自动抛出异常 int i 0 cin gt gt i what if someone enters zero try i 5 i catch std lo
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • Paperclip 会自动清理文件名吗?

    我正在使用 Thoughtbot回形针宝石 https github com thoughtbot paperclip处理文件上传 我发现当我上传文件名中包含空格的文件时 它会用下划线替换空格来存储 那挺好的 我还尝试上传带有特殊字符的文件
  • 我如何知道谁持有shared_ptr<>?

    I use boost shared ptr在我的 C 应用程序中 内存问题确实很严重 应用程序占用大量内存 但是 因为我将每个新对象放入shared ptr 当应用程序退出时 无法检测到内存泄漏 一定有类似的东西std vector
  • 如何使用golang中通过引用传递的索引访问切片中的元素

    我将切片的引用传递给函数 并且我正在函数内的切片中进行更改 我还尝试使用索引访问切片中的元素 它在 golang 中抛出异常 通过引用传递的索引访问切片中的元素的最佳方法是什么 您可以在此处找到示例代码 参考 http www reddit