账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang函数传递指针和传递结构体,函数内部是如何屏蔽细节的?
    36
    0
    func main(){
    
        type ColorGroup struct {
            ID     int
            Name   string
            Colors []string
        }
        group := ColorGroup{
            ID:     1,
            Name:   "Reds",
            Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
        }
    //第一种方式
        b, err := json.Marshal(&group)
    //第二种方式
        b, err := json.Marshal(group)
        if err != nil {
            fmt.Println("error:", err)
        }
        os.Stdout.Write(b)
    }
    
    

    //第一种方式

    b, err := json.Marshal(&group)

    //第二种方式

    b, err := json.Marshal(group)
    
    

    运行结果都是:{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}

    这两种方式 得到的b结果都一样,go是值传递, 第一种是传递指针的拷贝,第二种方式是传递结构体的拷贝。
    那么我想问题的问题是Marshall函数内部是如何 屏蔽 这个可以接收不同参数 细节的?

    为什么传递指针和结构体都可以实现相同 效果?

    go基础不好,感谢 各位指点。

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部