Golang中struct{}和struct{}{}的區(qū)別解析
首先說下Golang中的結構體,結構體是由一系列具有相同類型或不同類型的數(shù)據(jù)構成的數(shù)據(jù)集合,Golang中使用關鍵字struct來創(chuàng)建一個結構體,語法如下:
typeStudentstruct { Name string }
下面定義一個Student結構體,例如:
typeStudentstruct { name string }
然后聲明一個Student類型的變量并賦值
var stu Student stu.name = "小明"
聲明一個struct類型變量并賦值還有一種方式是使用匿名struct,代碼非常簡潔:
stu := struct { name string }{ "小明", }
還可以使用匿名struct聲明一個變量但不賦值,例如:
stu := struct { }{ }
把空行和空格去掉后就是struct {} {},所以到此就可以看出struct {}和struct {} {}的區(qū)別了。
struct {}
struct {}和struct { name string }一樣是結構體類型, 只是沒有任何元素。struct {}的特點是大小為0,不占用任何內存。
struct {} {}
struct {} {}一個struct {}類型的值,該值也是空。
使用場景舉例
比如使用map類型構造集合,可以使用這樣一個類型的map:map[string]struct{},使用struct{}類型的值來節(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) }
運行程序,輸出如下內容:
Ismonkeyinthezoo?trueIscatinthezoo?false
到此這篇關于Golang中struct{}和struct{}{}的區(qū)別解析的文章就介紹到這了,更多相關go struct{}和struct{}{}的區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Golang Map value不可尋址使用指針類型代替示例詳解
這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11