Go 面试题 002:Go 中的指针有什么作用?

Go编程时光

共 1256字,需浏览 3分钟

 · 2021-09-28

大家好,我是明哥。

欢迎大家再次来到  Go 语言面试题库 这个专栏,前几天一直在准备面试,也还没有抽空时间来把最近几天写的这些内容发表出来。

从今天开始,我会日更这个系列的文章,希望跟大家一些学习进步。

再次说明一下,前面几篇都非常的基础,本来我也不想发表这么基础的题,有的可能一句话就能回答的事情,也没什么可以写的。

考虑该系列专栏的系统性,又不得不写,因为我是希望该系列专栏能适用于所有的人。

但同时我也不占用大家的时间线,就一次性利用二栏,三栏,四栏等的位置,把这些基础的内容全部发表出来。

后续可能也还会补充一些基础的,到时也会采用这个发文策略。

先跟大家汇报一下进度,到今天(2021.9.25)为止,我已经完成了 34 篇。

由于文章主题都是临时起意,想到什么写什么,并没有提前列好提纲,因此基础和进阶的内容会交叉发布,这一点再声明一下,大家可以按需阅读。

同时我对已完成的文章进行了分类,发布到了 Github 上:

链接:https://github.com/iswbm/golang-interview

整个系列的文章目录,你可以点击本篇文章顶部的 『Go 语言面试题库』进入浏览。



 

第二题

请听题:

Go 中的指针有什么用?

# 什么是指针和指针变量

普通的变量,存储的是数据,而指针变量,存储的是数据的内存地址。

学习指针,主要有两个运算符号,要记牢

  • &:地址运算符,从变量中取得值的内存地址

// 定义普通变量并打印
age := 18
fmt.Println(age) //output: 18

ptr := &age
fmt.Println(ptr) //output: 
  • *:解引用运算符,从内存地址中取得存储的数据

myage := *ptr
fmt.Println(myage) //output: 18

# 指针的意义是什么?

意义一:省内存

当你往一个函数传递参数时,若该参数是一个值类型的变量,则在调用函数时,会将原来的变量的值拷贝一遍。

假想每次传参都用数组,那么每次数组都要被复制一遍。如果数组大小有 100万,在64位机器上就需要花费大约 800W 字节,即 8MB 内存。这样会消耗掉大量的内存。

意义二:易编码

写了一个函数来实现更新某对象里的一些数据,在值类型的变量中,若不使用指针,则函数需要重新返回一个更新过的全新对象。

而有了指针,则可以不用返回。


是不是很简单?跟着明哥一起来攻克 Go 的各个边边角角的知识吧?

加油噢,我们下篇见

   


喜欢明哥文章的同学
欢迎长按下图订阅!

⬇⬇⬇

浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报