美文网首页
go语言值传递与指针传递

go语言值传递与指针传递

作者: Ucan先生 | 来源:发表于2018-07-27 17:22 被阅读0次

go语言指针

go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。

go语言的指针的值复制与地址复制

数组

作为函数参数调用和复制均为值传递

package main
import "fmt"

//测试go语言数组slice调用时进行值传递还是地址传递
值传递
func main()  {
    arr:= [5]int{1,2,3,4,5}
    test(arr)
    fmt.Println(arr)
}

func test(arr [5]int)  {
    arr[0] += 5
}

地址传递

func main()  {
    arr:=[5]int{1,2,3,4,5}
    test(&arr)
    fmt.Println(arr)
}

func test(arr *[5]int)  {
    arr[0]+=5
}
slice

slice直接赋值和地址赋值都为指针操作

//slice的值传递与地址传递
func main()  {
    arr := [5]int{1,2,3,4,5}
    slice := arr[0:5]
    test(slice)
    fmt.Println(slice)
    fmt.Println(arr)
}

func test(s []int)  {
    s[0] += 5
}

上下两种类似


func main()  {
    arr := [5]int{1,2,3,4,5}
    slice := arr[0:5]
    test(&slice)
    fmt.Println(slice)
    fmt.Println(arr)
}

func test(s *[]int)  {
    (*s)[0] += 5
}

相关文章

  • go 语言指针

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

  • 2-7 指针

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

  • Go语言学习笔记(三)

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

  • go语言值传递与指针传递

    go语言指针 go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。 g...

  • golang 笔记

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

  • 【golang】3.0 指针、数组、range关键字、Slice

    指针 指针在go语言中是一个很重要的概念,但比c语言简单多了。 指针简单在:指针不能运算参数传递:值传递还是引用传...

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

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

  • Go array、slice、map和struct的对比

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

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

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

  • Golang值传递和指针传递

    指针传递与值传递 严格地说,go方法或函数只有一种传递方式,那就是值传递。每次将一个变量作为参数传递时,都会创建一...

网友评论

      本文标题:go语言值传递与指针传递

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