美文网首页
实例解析go语言method指针receiver的用处,及非指针

实例解析go语言method指针receiver的用处,及非指针

作者: 码字的程序员 | 来源:发表于2022-07-23 10:12 被阅读0次

method指针receiver的用处

go语言中method使用指针作为receiver接受体的用处与使用费指针的区别主要在于如下两个方面:

传递指针更高效:非指针作为receiver,就像形参一样,传递的是一个类型(结构体)的copy,但这个结构体的字段、方法、属性非常多,也就是体量较大,这样copy就不划算了,比较耗时耗内存,而使用指针传递的是结构体的地址引用,非常轻量级;
更改值:指针作为receiver可以达到修改字段值的作用,而非指针则不能。

指针receiver语法

func ( r *ReceiverType ) func ( args list ) ( results list )

method指针receiver实例

package main

import "fmt"

type Rose struct {
    Lan string
}

func (r Rose) x1() {
    r.Lan = "不可以修改"
    fmt.Println(r.Lan)
}

func (r *Rose) y1() {
    r.Lan = "可以修改"
    fmt.Println(r.Lan)
}

func main() {

    var r Rose
    r.Lan = "这是玫瑰!"
    r.x1()
    fmt.Println(r.Lan)
    r.y1()
    fmt.Println(r.Lan)

}

代码输出:

不可以修改
这是玫瑰!
可以修改
可以修改

代码解析:

如上代码,方法x1的接受体receiver为普通Rose结构体,y1则为Rose结构体的指针,然后分别调用x1和y1,再分别打印r.Lan字段的值,通过输出,证明了指针接受体receiver的字段值被修改了,而非指针的则保持不变。

更多go语言语法教程及丰富实例,可以参考如下内容:

go语言method方法指针作为receiver的用处,及与非指针的区别

相关文章

  • 实例解析go语言method指针receiver的用处,及非指针

    method指针receiver的用处 go语言中method使用指针作为receiver接受体的用处与使用费指针...

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

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

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • Go语言指针作为函数参数

    Go 语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可。以下实例演示了如何向函数传递指针,并在函...

  • Golang 指针

    指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。Go语言当中的指针涉及到三个点:指...

  • 13-Go语言指针和方法

    指针 普通数据类型指针 Go语言中的普通指针和C语言中的普通指针一样, 通过指针也可以间接操作指向的存储空间 Go...

  • 特殊数据类型

    指针 GO 语言像 C 一样有指针,可以通过指针访问数据,但是 GO 的指针要安全的多: 首先,访问空指针会直接报...

  • Go语言入门总结(六)-指针

    指针 1.&和* 在go语言中,也有指针的概念,不同于java。是没有指针的概念的。但是go语言的指针也并没有c中...

  • Golang:关于寻址的一些问题

    Go 语言有点像 C 语言,它有指针,用 * 标识一个指针,用 & 标识一个地址,但 Go 语言的指针比较简单,没...

网友评论

      本文标题:实例解析go语言method指针receiver的用处,及非指针

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