上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 李恒道 - 

golang 初始化指针切片

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-3-12 16:08:41 | 显示全部楼层 | 阅读模式

    原文
    https://stackoverflow.com/questions/45639721/golang-anonymous-struct-in-initializing-slice-of-pointers

    正文

    在 GOPL 第 7 章(第 7.6 节)中,我注意到了这一行:

    var tracks = []*Track{
         {"Go", "Delilah", "From the Roots Up", 2012, length("3m38s")},
         {"Go", "Moby", "Moby", 1992, length("3m37s")},
         {"Go Ahead", "Alicia Keys", "As I Am", 2007, length("4m36s")},
         {"Ready 2 Go", "Martin Solveig", "Smash", 2011, length("4m24s")},
    }

    我对他如何初始化Track的指针切片感到困惑,所以我尝试了如下示例

    type Ex struct {
        A, B int
    }
    
    a := []Ex{Ex{1, 2}, Ex{3, 4}}
    b := []Ex{{1, 2}, {3, 4}}
    c := []*Ex{&Ex{1, 2}, &Ex{3, 4}}
    d := []*Ex{{1, 2}, {3, 4}}
    e := []*Ex{{1, 2}, &Ex{3, 4}}

    我发现所有的五个案例都没有错误,{1,2}似乎是一个匿名结构,但让我感到困惑,因为即使我试图填写Ex指针而不是Ex结构,他也可以正常工作
    此外,当我尝试一下代码的时候,它会提示语法错误

    f := []*Ex{&{1, 2}, &{3, 4}} // Syntax Error!

    有人可以帮助解释这些情况下实际发生的情况吗

    解答

    我认为匿名在这里是错误的,该结构具有一个名称“Track”或“Ex”,并且你正在使用快速初始化来初始化

    f := []<type>{{...}, {...}}

    与以下内容大致相同:

    f := []<type>{<type>{...}, <type>{...}}

    他比盲目的进行字符串替换只能许多,如果是一个type的指针,它也可以正确初始化

    f := []*<type>{{...}, {...}} // is the same as...
    f := []*<type>{&<type>{...}, &<type>{...}}

    并且他对map的作用相同

    f := map[string]*<type>{"a": {...}, "b": {...}} // is the same as...
    f := map[string]*<type>{"a": &<type>{...}, "b": &<type>{...}}
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    开心
    2024-10-29 17:52
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    10

    主题

    32

    回帖

    67

    积分

    初级工程师

    积分
    67

    油中2周年油中3周年挑战者 lv2

    发表于 2023-3-12 16:48:49 | 显示全部楼层
    哥哥学慢点吧,我赶不上了
    油猴中文网精神合作伙伴ikun
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-3-13 09:35:37 | 显示全部楼层
    换了个头像不认识了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-3-13 09:35:58 | 显示全部楼层
    简单来说,就是语法糖
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表