美文网首页
go指针传递和值传递

go指针传递和值传递

作者: 让梦想腾飞 | 来源:发表于2018-11-25 00:25 被阅读0次

在函数传参的时候,见有人用指针传,如下:

type struct Info{
      Msg string `json:"msg"`
}
function test(info *Info){
        ...
        return
}

就想着为什么非要传指针呢,你要Info,直接写在函数返回值里不也可在函数间传递吗?

type struct Info{
      Msg string `json:"msg"`
}
function test(info Info) Info{
      ...
      return info
}

后来,总结了几点传指针和传值的情况,如下:

一 、传指针

1、要修改变量的值,供函数之后使用,用指针。如

type struct Info{
    Msg string `json:"msg"`
}
function test1(info *Info){
    ...
    return
}
function test2(info *Info){
    ...
    return
}
function test(){
    info:=&Info{}
    test1(info)
    test2(info)
    fmt.Println(info)
    return
}

2、变量是个大的结构,用指针

传值复制大的结构,影响性能

二、传值

1、map 和slice 本身是引用类型,传值就可以了。

2、内存分配性能上,传值可简化go的逃逸分析(方法内创建的对象,被方法外使用,无法收回。),传值优于传指针。

相关文章

  • Go语言学习笔记(三)

    指针 Go的指针不能运算 参数传递 Go的参数传递是值传递(值传递:开辟新的空间,拷贝传递参数的值,引用传递:引用...

  • go指针传递和值传递

    在函数传参的时候,见有人用指针传,如下: 就想着为什么非要传指针呢,你要Info,直接写在函数返回值里不也可在函数...

  • go 语言指针

    go 语言指针 go 语言的参数传递全部都是 值传递 用一个交换的例子学习指针

  • 2-7 指针

    指针 不能运算 参数传递 go语言只有值传递一种方式

  • 读书笔记17.06.02【stack】【vector】

    C++中参数传递:按值传递,指针传递和引用传递按值传递:形参是实参的拷贝。指针传递:拷贝指针,被调用函数对指针指向...

  • golang 笔记

    1、go语言只有值传递,没有引用传递。但可以用指针方式实现引用传递 定义:

  • go map and slice 2021-10-08

    go值传递 golang是值传递,什么情况下都是值传递 那么,如果结构中不含指针,则直接赋值就是深度拷贝; 如果结...

  • go语言的值传递和指针传递

    Go允许通过指针(有时称为引用)和值来传递参数。在这篇文章中,我们将比较两种方法,特别注意可能影响选择的不同情境。...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • Go编程基础(array、slice、map和struct)

    这篇讲解go语言中数据存储类型array、slice、map和struct,要清楚它们那些是值传递,那些是指针传递...

网友评论

      本文标题:go指针传递和值传递

      本文链接:https://www.haomeiwen.com/subject/atxeqqtx.html