Go 提供了一個名為sync/atomic的包,其中包含一組用于對原始數(shù)據(jù)類型(如整數(shù)和指針)執(zhí)行原子操作的函數(shù)。在 Go 中,一些常用的原子操作包括: 1.Load(加載) atomic.Load*函數(shù)用于原子地讀取變量的值。例如,atomic.LoadInt32用于原子地加載 int32 變量的值。
1、Go 官方的定義 本部分引用 Go 官方 FAQ 的“When are function parameters passed by value?”,內(nèi)容如下。 如同C 系列的所有語言一樣,Go 語言中的所有東西都是以值傳遞的。也就是說,一個函數(shù)總是得到一個被傳遞的東西的副本,就像有一個賦值語句將值賦給參數(shù)一樣。
本文主要介紹了 Go 語言逃逸分析,它可以幫助我們合理分配對象的內(nèi)存空間。 我們知道分配到堆內(nèi)存空間的對象,會導(dǎo)致 Go 執(zhí)行垃圾回收,而垃圾回收會占用系統(tǒng)資源,降低應(yīng)用程序本身可使用的系統(tǒng)資源。 所以,我們在實(shí)際項目開發(fā)中,可以借助 Go 工具鏈分析對象是否會發(fā)生逃逸,盡量避免一些不必要的對象逃逸。