Go 面試題 002:Go 中的指針有什么作用?
歡迎大家再次來到 『Go 語言面試題庫』 這個專欄,前幾天一直在準備面試,也還沒有抽空時間來把最近幾天寫的這些內(nèi)容發(fā)表出來。
從今天開始,我會日更這個系列的文章,希望跟大家一些學習進步。
再次說明一下,前面幾篇都非常的基礎,本來我也不想發(fā)表這么基礎的題,有的可能一句話就能回答的事情,也沒什么可以寫的。
但考慮該系列專欄的系統(tǒng)性,又不得不寫,因為我是希望該系列專欄能適用于所有的人。
但同時我也不占用大家的時間線,就一次性利用二欄,三欄,四欄等的位置,把這些基礎的內(nèi)容全部發(fā)表出來。
后續(xù)可能也還會補充一些基礎的,到時也會采用這個發(fā)文策略。
先跟大家匯報一下進度,到今天(2021.9.25)為止,我已經(jīng)完成了 34 篇。

由于文章主題都是臨時起意,想到什么寫什么,并沒有提前列好提綱,因此基礎和進階的內(nèi)容會交叉發(fā)布,這一點再聲明一下,大家可以按需閱讀。
同時我對已完成的文章進行了分類,發(fā)布到了 Github 上:
鏈接:https://github.com/iswbm/golang-interview

整個系列的文章目錄,你可以點擊本篇文章頂部的 『Go 語言面試題庫』進入瀏覽。

第二題

請聽題:
Go 中的指針有什么用?
# 什么是指針和指針變量
普通的變量,存儲的是數(shù)據(jù),而指針變量,存儲的是數(shù)據(jù)的內(nèi)存地址。
學習指針,主要有兩個運算符號,要記牢
&:地址運算符,從變量中取得值的內(nèi)存地址
// 定義普通變量并打印
age := 18
fmt.Println(age) //output: 18
ptr := &age
fmt.Println(ptr) //output:
*:解引用運算符,從內(nèi)存地址中取得存儲的數(shù)據(jù)
myage := *ptr
fmt.Println(myage) //output: 18
# 指針的意義是什么?
意義一:省內(nèi)存
當你往一個函數(shù)傳遞參數(shù)時,若該參數(shù)是一個值類型的變量,則在調(diào)用函數(shù)時,會將原來的變量的值拷貝一遍。
假想每次傳參都用數(shù)組,那么每次數(shù)組都要被復制一遍。如果數(shù)組大小有 100萬,在64位機器上就需要花費大約 800W 字節(jié),即 8MB 內(nèi)存。這樣會消耗掉大量的內(nèi)存。
意義二:易編碼
寫了一個函數(shù)來實現(xiàn)更新某對象里的一些數(shù)據(jù),在值類型的變量中,若不使用指針,則函數(shù)需要重新返回一個更新過的全新對象。
而有了指針,則可以不用返回。
是不是很簡單?跟著明哥一起來攻克 Go 的各個邊邊角角的知識吧?
加油噢,我們下篇見

???
