欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang空結(jié)構(gòu)體struct{}用途,你知道嗎

 更新時(shí)間:2021年01月15日 14:52:08   作者:羅奇正  
這篇文章主要介紹了Golang空結(jié)構(gòu)體struct{}用途,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

golang 空結(jié)構(gòu)體 struct{} 可以用來(lái)節(jié)省內(nèi)存

a := struct{}{}
println(unsafe.Sizeof(a))
// Output: 0

理由如下:

  1. 如果使用的是map,而且map又很長(zhǎng),通常會(huì)節(jié)省不少資源
  2. 空struct{}也在向別人表明,這里并不需要一個(gè)值

本例說(shuō)明在map里節(jié)省資源的用途:

set := make(map[string]struct{})
for _, value := range []string{"apple", "orange", "apple"} {
  set[value] = struct{}{}
}
fmt.Println(set)
// Output: map[orange:{} apple:{}]

下例,演示了struct{}可以向人展示對(duì)象中不需要任何數(shù)據(jù),僅包含需要方法。在調(diào)用也并無(wú)任何區(qū)別

type Lamp struct{}

func (l Lamp) On() {
    println("On")

}
func (l Lamp) Off() {
    println("Off")
}

func main() {
    // Case #1.
    var lamp Lamp
    lamp.On()
    lamp.Off()
    // Output:
    // on
    // off
 
    // Case #2.
    Lamp{}.On()
    Lamp{}.Off()
    // Output: 
    // on
    // off
}

還有其他情況,比如有時(shí)候使用channel,但并不需要附帶任何數(shù)據(jù)。

func worker(ch chan struct{}) {
 // Receive a message from the main program.
 <-ch
 println("roger")
 
 // Send a message to the main program.
 close(ch)
}

func main() {
 ch := make(chan struct{})
 go worker(ch)
 
 // Send a message to a worker.
 ch <- struct{}{}
 
 // Receive a message from the worker.
 <-ch
 println(“roger")
 // Output:
 // roger
 // roger
}

到此這篇關(guān)于Golang空結(jié)構(gòu)體struct{}用途,你知道嗎的文章就介紹到這了,更多相關(guān)Golang空結(jié)構(gòu)體struct{}內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang+Vue輕松構(gòu)建Web應(yīng)用的方法步驟

    Golang+Vue輕松構(gòu)建Web應(yīng)用的方法步驟

    本文主要介紹了Golang+Vue輕松構(gòu)建Web應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Go操作mongodb數(shù)據(jù)庫(kù)方法示例

    Go操作mongodb數(shù)據(jù)庫(kù)方法示例

    這篇文章主要為大家介紹了Go操作mongodb數(shù)據(jù)庫(kù)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • go語(yǔ)言對(duì)文件按照指定塊大小進(jìn)行分割的方法

    go語(yǔ)言對(duì)文件按照指定塊大小進(jìn)行分割的方法

    這篇文章主要介紹了go語(yǔ)言對(duì)文件按照指定塊大小進(jìn)行分割的方法,實(shí)例分析了Go語(yǔ)言文件操作的技巧,需要的朋友可以參考下
    2015-03-03
  • 淺談goland導(dǎo)入自定義包時(shí)出錯(cuò)(一招解決問(wèn)題)

    淺談goland導(dǎo)入自定義包時(shí)出錯(cuò)(一招解決問(wèn)題)

    這篇文章主要介紹了淺談goland導(dǎo)入自定義包時(shí)出錯(cuò)(一招解決問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang實(shí)現(xiàn)EasyCache緩存庫(kù)實(shí)例探究

    Golang實(shí)現(xiàn)EasyCache緩存庫(kù)實(shí)例探究

    這篇文章主要為大家介紹了Golang實(shí)現(xiàn)EasyCache緩存庫(kù)實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Go語(yǔ)言使用defer+recover解決panic導(dǎo)致程序崩潰的問(wèn)題

    Go語(yǔ)言使用defer+recover解決panic導(dǎo)致程序崩潰的問(wèn)題

    如果協(xié)程出現(xiàn)了panic,就會(huì)造成程序的崩潰,這時(shí)可以在goroutine中使用recover來(lái)捕獲panic,進(jìn)行處理,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-09-09
  • Golang中的占位符詳解

    Golang中的占位符詳解

    這篇文章主要給大家詳細(xì)總結(jié)了Golang中的占位符用法,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)我們學(xué)習(xí)Golang占位符有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • Golang實(shí)現(xiàn)單鏈表的示例代碼

    Golang實(shí)現(xiàn)單鏈表的示例代碼

    本文主要介紹了Golang實(shí)現(xiàn)單鏈表的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go單例實(shí)現(xiàn)雙重檢測(cè)是否安全的示例代碼

    go單例實(shí)現(xiàn)雙重檢測(cè)是否安全的示例代碼

    這篇文章主要介紹了go單例實(shí)現(xiàn)雙重檢測(cè)是否安全,本文給大家分享雙重檢驗(yàn)示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 一文帶你探索Golang計(jì)時(shí)器的奧秘

    一文帶你探索Golang計(jì)時(shí)器的奧秘

    在?Golang?中,計(jì)時(shí)器(timer)是一種常見(jiàn)的工具,用于定期執(zhí)行某個(gè)任務(wù)或者在指定時(shí)間后觸發(fā)某個(gè)事件。本文將深入探討?Golang?計(jì)時(shí)器的實(shí)現(xiàn)原理和使用方法,幫助大家更好地理解和應(yīng)用計(jì)時(shí)器
    2023-05-05

最新評(píng)論