Golang中struct{}和struct{}{}的區(qū)別解析
首先說(shuō)下Golang中的結(jié)構(gòu)體,結(jié)構(gòu)體是由一系列具有相同類(lèi)型或不同類(lèi)型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,Golang中使用關(guān)鍵字struct來(lái)創(chuàng)建一個(gè)結(jié)構(gòu)體,語(yǔ)法如下:
typeStudentstruct {
Name string
}下面定義一個(gè)Student結(jié)構(gòu)體,例如:
typeStudentstruct {
name string
}然后聲明一個(gè)Student類(lèi)型的變量并賦值
var stu Student stu.name = "小明"
聲明一個(gè)struct類(lèi)型變量并賦值還有一種方式是使用匿名struct,代碼非常簡(jiǎn)潔:
stu := struct {
name string
}{
"小明",
}還可以使用匿名struct聲明一個(gè)變量但不賦值,例如:
stu := struct {
}{
}把空行和空格去掉后就是struct {} {},所以到此就可以看出struct {}和struct {} {}的區(qū)別了。
struct {}
struct {}和struct { name string }一樣是結(jié)構(gòu)體類(lèi)型, 只是沒(méi)有任何元素。struct {}的特點(diǎn)是大小為0,不占用任何內(nèi)存。
struct {} {}
struct {} {}一個(gè)struct {}類(lèi)型的值,該值也是空。
使用場(chǎng)景舉例
比如使用map類(lèi)型構(gòu)造集合,可以使用這樣一個(gè)類(lèi)型的map:map[string]struct{},使用struct{}類(lèi)型的值來(lái)節(jié)省空間。
package main
import"fmt"funcmain() {
zoo := make(map[string]struct{})
zoo["monkey"] = struct{}{}
zoo["tiger"] = struct{}{}
_, ok := zoo["monkey"]
fmt.Println("Is monkey in the zoo?", ok)
_, ok = zoo["cat"]
fmt.Println("Is cat in the zoo?", ok)
}運(yùn)行程序,輸出如下內(nèi)容:
Ismonkeyinthezoo?trueIscatinthezoo?false
到此這篇關(guān)于Golang中struct{}和struct{}{}的區(qū)別解析的文章就介紹到這了,更多相關(guān)go struct{}和struct{}{}的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Go語(yǔ)言各種常見(jiàn)類(lèi)型的默認(rèn)值和判空方法
本文主要介紹了詳解Go語(yǔ)言各種常見(jiàn)類(lèi)型的默認(rèn)值和判空方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
golang實(shí)現(xiàn)并發(fā)控制的方法和技巧
golang 是一門(mén)支持并發(fā)的編程語(yǔ)言,它提供了 goroutine 和 channel 等強(qiáng)大的特性,讓我們可以輕松地創(chuàng)建和管理多個(gè)執(zhí)行單元,實(shí)現(xiàn)高效的任務(wù)處理,在本文中,我們將介紹一些 golang 的并發(fā)控制的方法和技巧,希望對(duì)你有所幫助2024-03-03
一文教你學(xué)會(huì)Go中singleflight的使用
緩存在項(xiàng)目中使用應(yīng)該是非常頻繁的,提到緩存只要了解過(guò)?singleflight?,基本都會(huì)用于緩存實(shí)現(xiàn)的一部分吧,下面就跟隨小編一起來(lái)學(xué)習(xí)一下singleflight的使用吧2024-02-02
Golang 協(xié)程配合管道的實(shí)現(xiàn)示例
本文主要介紹了Golang協(xié)程配合管道的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
Go語(yǔ)言變量與基礎(chǔ)數(shù)據(jù)類(lèi)型詳情
Go 是靜態(tài)(編譯型)語(yǔ)言,是區(qū)別于解釋型語(yǔ)言的弱類(lèi)型語(yǔ)言(靜態(tài):類(lèi)型固定,強(qiáng)類(lèi)型:不同類(lèi)型不允許直接運(yùn)算),下面文章將對(duì)其進(jìn)行詳細(xì)介紹,需要的朋友可以參考一下2021-09-09
Goland項(xiàng)目使用gomod配置的詳細(xì)步驟
Goland是一個(gè)用于Go語(yǔ)言開(kāi)發(fā)的IDE,Goland的項(xiàng)目結(jié)構(gòu)與Go語(yǔ)言的項(xiàng)目結(jié)構(gòu)相似,下面這篇文章主要給大家介紹了關(guān)于Goland項(xiàng)目使用gomod配置的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Golang設(shè)計(jì)模式之單例模式詳細(xì)講解
單例模式很容易記住。就像名稱(chēng)一樣,它只能提供對(duì)象的單一實(shí)例,保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)該實(shí)例的方法。本文就來(lái)聊聊Go語(yǔ)言中的單例模式,感興趣的小伙伴可以了解一下2023-01-01

