package mainimport (
"fmt""
unsafe")
func main()
//空結構體的例項和作用
func empstruct()
var s1 struct
{} fmt.println(
"空結構體占用記憶體的情況:
",unsafe
.sizeof(s))
fmt.printf(
"空結構體指標指向情況:s = %p, s1 = %p,兩個指標的比較結果:%v
",&s,&s1,&s==&s1)
strchan := make(chan string,3
) signchan := make(chan struct{},1) //
接收資料訊號
signchan1 := make(chan struct{},2) //
操作完成訊號
go func()
signchan1
<- struct
{}{}
}()go func(){} }}
close(strchan)
signchan1
<- struct
{}{}
}()fmt.println(
"等待上面連個協程執行結束")
<-signchan1
<- signchan1 //
阻塞,直到上面兩個協程完成
}
輸出如下
空結構體占用記憶體的情況: 0空結構體指標指向情況:s = 0x58ccd8, s1 = 0x58ccd8
,兩個指標的比較結果:true等待上面連個協程執行結束
傳送資料:
1傳送資料:
2傳送資料:
3接收到值為:
1接收到值為:
2接收到值為:
3
空結構體作用
Go 結構體,定義結構體型別,struct
demo.go 定義結構體型別 package main import fmt 定義結構體型別 在函式外部定義 全域性的 可以在整個專案中使用 type student struct func main 按結構體定義時的成員順序進行顯示。定義結構體變數並賦值 第二種方式 var stu2 stude...
go語言 空結構體 chan struct
空結構體的寬度是0,占用了0位元組的記憶體空間。var s struct fmt.println unsafe.sizeof s prints 0由於空結構體占用0位元組,那麼空結構體也不需要填充位元組。所以空結構體組成的組合資料型別也不會占用記憶體空間。type s struct b struct...
Go學習筆記(11)Go結構體struct
go的結構體是一種復合型別,它由一系列屬性 字段 組成,每個屬性 字段 都有自己的型別和值。結構體的字段可以是任何型別,甚至是結構體本身 函式 介面等 在go中沒有類的概念,因此結構體經常被用來替代物件導向中的類的操作 結構體的定義格式如下 type structname struct 下面是乙個結...