Go 空結構體struct 作用

2022-06-10 21:51:18 字數 1016 閱讀 4620

package main

import (

"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 下面是乙個結...