首页 > 其他分享 >golang面试题2

golang面试题2

时间:2022-09-04 13:33:34浏览次数:63  
标签:面试题 p1 age 接收者 golang Person 类型 指针

1、go方法值接收者和指针接收者

结论:如果方法的接收者是指针类型,无论调用者是对象还是对象指针,修改的都是对象本身,会影响调用者

           如果方法的接收者是值类型,无论调用者是对象还是对象指针,修改的都是对象的副本,不影响调用者

package main

import "fmt"

type Person struct {
	age int
}

// 如果实现了接收者是指针类型的方法,会隐含地也实现接收者是值类型的IncrAge1方法
// 会修改age的值
func (p *Person) IncrAge1() {
	p.age += 1
}

// 如果实现了接收者是值类型的方法,会隐含地也实现了接收者是指针类型的IncrAge2方法
// 不会修改age的值
func (p Person) IncrAge2() {
	p.age += 1
}

// 如果实现了接收者是值类型的方法,会隐含地也实现接收者是指针类型的GetAge方法
func (p Person) GetAge() int {
	return p.age
}

func main() {
	//p1是值类型
	p1 := Person{age: 20}

	//值类型 调用接收者是指针类型的方法
	p1.IncrAge1()
	fmt.Println(p1.GetAge())
	//值类型 调用接收者是值类型的方法
	p1.IncrAge2()
	fmt.Println(p1.GetAge())
}

  

 

标签:面试题,p1,age,接收者,golang,Person,类型,指针
From: https://www.cnblogs.com/wuchangblog/p/16654945.html

相关文章

  • 2022 年 Javascript 面试题
    2022年Javascript面试题这是我在前端面试中遇到的第二组javascript问题。可以通过这个帖子找到上一组javascript的问题[面试题2022基础javascript从一家公司转到......
  • leetcode 面试题08.08 有重复字符串的排列组合 C/C++ 排序 + 深度优先搜索(分支限界)
    #include<iostream>#include<algorithm>#include<vector>usingnamespacestd;classSolution{public:vector<string>permutation(stringS){sort(S.begin(......
  • 献芹奏曝-Python面试题-算法-链表篇
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • Elasticsearch 面试题
    Elasticsearch面试题为什么要使用Elasticsearch?系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎......
  • golang sort.Slice用法
    funcSlice(xinterface{},lessfunc(i,jint)bool)//第一个形参是:待排序数据xinterface{}//第二个形参是:排序判断方法//形参i代表后一个元素//形参j代......
  • Golang字符串库函数(常用)
    Golang基础-3字符串系统函数统计字符串长度按字节进行统计len(str)这是个内置函数,不用额外导包注意在golang中用的是utf-8编码,字母是一个字节,汉字是三个字节字符串的......
  • 前端面试题 JavaScript 基础 —— 2022-09-03
    每日3题13以下代码执行后,控制台中的输出内容为?Object.prototype.a=1;Function.prototype.b=2;functionF(){}varf=newF();console.log(F.a);console.lo......
  • Golang基础-2
    Golang基础2指针如果声明变量varxint,则&x是获取x值所在的地址,类型是整型指针(*int),即我们可以声明一个变量来接收其返回值varp*int=&x那么p就是一个指针变量 ag......
  • redis面试题
    Rdeis面试42问(qq.com)1.简单介绍一下Redis呗!2.分布式缓存常见的技术选型方案有哪些?3.说一下Redis和Memcached的区别和共同点4.缓存数据的处理流程是怎样的?5.......
  • Golang获取随机float64(正数)数据与随机int数据(可以是负数)
    packageutilsimport("fmt""github.com/shopspring/decimal""math""math/rand""testing""time")funcinit(){//初始化rand模......