文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在golang中用另一个数组初始化别名数组?

2024-04-04 23:46

关注

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何在golang中用另一个数组初始化别名数组?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

type foo [3]int

arr := [3]int {1, 2, 3}
foo := &foo{arr}

它在 golang 中不起作用,它说:

无法将“arr”(类型 [3]int)用作 int 类型

我应该如何正确且优雅地做到这一点;-),我希望我的代码可以写成如下:

func_name(&foo{arr}) // func_name is to receive a *foo and do something

如果我这样编写代码:

type Foo struct {array [3]int}  
  
arr := [3]int {1, 2, 3}  
func_name(&Foo(arr))

它工作得很好,但我希望我的代码可以尽可能简单。


正确答案


您的意思是:

arr := [3]int{1, 2, 3}
foo := foo(arr)

这里是 playground link to try it。但这不是别名;数组在分配时将被复制。如果您正在寻找别名,请考虑使用切片。

您的原始代码创建一个新的 foo 并尝试使用 arr 初始化其第一个元素,但由于编译器指定的原因而失败。

假设“别名”的意思是“两种不同的类型引用”相同的底层缓冲区”:获取一个指向数组的指针,并将其转换为另一种类型的指针。

package main

import "fmt"

type Foo [1]int

func main() {
    bar := [1]int{}
    foo := (*Foo)(&bar)

    bar[0] = 0xdeadbeef
    fmt.Println(*foo)
}

这在 go 中既不优雅也不惯用——这就是切片的用途。

以上就是《如何在golang中用另一个数组初始化别名数组?》的详细内容,更多关于的资料请关注编程网公众号!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯