• Go指南_指针接收者


    源地址 https://tour.go-zh.org/methods/4

    一、描述

    你可以为指针接收者声明方法。

    这意味着对于某类型 T,接收者的类型可以用 *T 的文法。(此外,T 不能是像 *int 这样的指针。)

    例如,这里为 *Vertex 定义了 Scale 方法。

    指针接收者的方法可以修改接收者指向的值(就像 Scale 在这做的)。由于方法经常需要修改它的接收者,指针接收者比值接收者更常用。

    试着移除第 16 行 Scale 函数声明中的 *,观察此程序的行为如何变化。

    若使用值接收者,那么 Scale 方法会对原始 Vertex 值的副本进行操作。(对于函数的其它参数也是如此。)Scale 方法必须用指针接受者来更改 main 函数中声明的 Vertex 的值。

    二、16行加*的运行结果

    运行过程:

    1. 在main中执行第22行程序,使结构体Vertex中的X=3,Y=4;
    2. 执行main中的第23行程序,调用第16行的Scale函数,f=10,则v.X=30,v.Y=40;
    3. 执行main中的第24行程序,调用12行的Abs函数,代入v.X和v.Y的值,返回平方的和后的平方根->50;
    4. 程序运行结束。

    三、16行不加*的运行结果

    运行过程:

    1. 在main中执行第22行程序,使结构体Vertex中的X=3,Y=4;
    2. 执行main中的第23行程序,调用第12行的Abs函数,返回值->5;
    3. 程序运行结束。
  • 相关阅读:
    python 进度条
    linux中利用Shell脚本实现自动安装部署weblogic服务
    Linux虚拟机如何上网
    常用Python脚本
    Allure测试框架
    软件评测师 第二小时
    保险项目测试流程(一)
    电子商务网站测试总结
    Python随机生成电话号码&号码段分析
    Python中的*args和**kwargs
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/9208799.html
Copyright © 2020-2023  润新知