go 類型和點語法是什麼
php小編草莓為您介紹Go語言中的型別和點文法。在Go語言中,類型是變數的屬性,用來定義變數的資料類型。 Go語言中的類型包括基本型別(如整數、浮點型、布林型等)和複合型別(如陣列、切片、映射等)。而點語法則是用來存取結構體和物件的屬性和方法的語法。透過使用點語法,我們可以直接使用物件或結構體的屬性或呼叫其方法,實現對資料的操作和處理。這種簡潔而直覺的語法使得Go語言在程式設計上更加便捷和有效率。
問題內容
dmeo 程式碼
package listing12_9 import ( "runtime" "sync" "sync/atomic" ) type SpinLock int32 func (s *SpinLock) Lock() { for !atomic.CompareAndSwapInt32((*int32)(s), 0, 1) { runtime.Gosched() } } func (s *SpinLock) Unlock() { atomic.StoreInt32((*int32)(s), 0) } func NewSpinLock() sync.Locker { var lock SpinLock return &lock }
atomic.CompareAndSwapInt32((*int32)(s), 0, 1)
語法是什麼,(*int) 和 (s) 是什麼意思?
解決方法
您已在此處定義了類型:
type SpinLock int32
但是您將使用以下規範來呼叫原子包中的方法:
func CompareAndSwapInt32(addr *int32, old, new int32) (swapped bool)
因此,要將類型為SpinLock 的變數s 傳送到CompareAndSwapInt32 方法,您必須向編譯器說明s< /strong> 可以用作int32,這稱為類型轉換,在golang 中我們這樣做:
convertedValue := TargetType(variable)
但是在學習Go 並發程式設計一書中,它使用了將變數s 從類型*SpinLock 轉換為*< 的老式方法strong>int32,更現代的方法可能是:
type SpinLock int32 func (s SpinLock) Lock() { castedS := int32(s) for !atomic.CompareAndSwapInt32(&castedS, 0, 1) { runtime.Gosched() } } func (s SpinLock) Unlock() { castedS := int32(s) atomic.StoreInt32(&castedS, 0) atomic.StoreInt32(&castedS, 0) }
以上是go 類型和點語法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...
