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. 程序运行结束。

原文地址:https://www.cnblogs.com/OctoptusLian/p/9208799.html

时间: 2024-11-13 09:37:27

Go指南_指针接收者的相关文章

高质量C++/C编程指南_读书笔记1

----------------------------------------------------------------------------- 引用和指针 ----------------------------------------------------------------------------- 以下程序中,n是m的一个引用(reference),m是被引用物(referent). int m; int &n = m; n相当于m的别名(绰号),对n的任何操作就是对m的

C/C++:提升_指针的指针和指针的引用

C/C++:提升_指针的指针和指针的引用 ◇写在前面 今天在使用指针的时候我发现了一个自己的错误. 我刚开自以为是觉得输出的两个P都是6,当时觉得两个p所指的地址相同,要修改就都修改了. 这是一个很低级的错误,两个p所指的地址相同,但是这两个指针的地址是不一样的. 好比两个人都知道火车站怎么走,但不能说这两个人是一个人,更何况在修改中一个人已经忘了火车站,它只知道高铁站怎么走,那另一个只知道火车站的并没有受到影响,他还是只知道火车站. 好了,那么如何做到main修改里面的p呢?要用到两种技术:

Project Server 2003配置部署指南_百度文库

Project Server 2003配置部署指南_百度文库 Project server 2003配置部署指南 - 网管地带 - IT博客

C编译器剖析_1.5 结合C语言来学汇编_指针、数组和结构体

让我们再来看一份C代码,及其经UCC编译器编译后产生的主要汇编代码,如图1.33所示,其中包含了数组.指针和结构体. 图1.33 数组.指针和结构体 按照C的语义,图1.33第9行的C代码是对局部数组number的初始化,需要把number[0]初始化为2015,而数组中的其他元素皆被初始化为0.UCC编译器采取的翻译方法是:先调用memset函数来把数组number所占的内存空间清0,然后再把number[0]设为2015,如图1.33的第17至24行所示.C库函数memset的API如下所示

手机卫士03_手势动作_广播接收者应用

//在控件上面按ctrl+1 可以抽取样式 1,设置向导界面的细节问题 1.1设置向导界面的跳转的时候要记得finsh(),把当前界面从任务栈中移除. 在设置向导界面的任何一个界面返回都应该返回home界面 1.2 Activity界面切换的动画 目标:本界面向左移出了屏幕,下一个界面从右边移出来(类似翻页效果) ovreridePendingTransition(进入动画文件资源id,退出动画文件资源id); //这个方法在startActivity,或finsh()后调用,可以更改动画变化的

C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效的机制,同时引入了另一个与指针相似但不相同的机制: 引用. 一.引用 简单的来说,引用就是变量的别名(alias), 通过别名我们可以操作引用代表的变量. 定义一个引用的语法如下所示: 变量类型   &引用标识符 = 变量名. Exp: int iVar=10; int &iRef = iVa

C语言_指针

指针:指针就是变量的地址 地址:一块内存的唯一标识 int a; &    :取地址符号 &a  : a的地址 a = 3:  //直接存取 int *p;  //未初始化的指针称为野指针 p   //指针变量名 *    //指向 指针变量只能存储地址(指针) p = &a: //p指向了变量a *p             //*p代表p指向的变量 *p = 5://间接存取(通过指针变量p间接的改写了变量a的值) //使用指针的注意事项: 1.定义指针时,初始化为空(NULL

经典算法_指针

一个指向整型数的指针 int*p 一个指向整型数指针的指针 int **p 一个有10个整型指针的数组 int *p[10] 一个指向有10个整型数数组的指针 int (*p)[10] 一个指向函数的指针,该函数有一个整型参数,并返回一个整型数 int ( *p)(int) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数,并返回一个整型数. int(*p[10])(int) 一个指向函数指针的指针,所指向的函数有一个整型参数,并返回一个整型数. int (**p)(int) i

_编程语言_查缺补漏_指针

指针的使用 1,定义 2,*ip        存储指针所指内存中内容 3,&var     变量var在内存的地址 4,ip         指针变量的地址 5,var       定义变量 #include <iostream> using namespace std; int main () { int var = 20; // 实际变量的声明 int *ip; // 指针变量的声明 ip = &var; // 在指针变量中存储 var 的地址 cout <<