editor php Strawberry akan memperkenalkan anda kepada jenis dan sintaks titik dalam bahasa Go. Dalam bahasa Go, jenis ialah atribut pembolehubah dan digunakan untuk menentukan jenis data pembolehubah. Jenis dalam bahasa Go termasuk jenis asas (seperti integer, jenis titik terapung, jenis Boolean, dll.) dan jenis komposit (seperti tatasusunan, kepingan, peta, dll.). Sintaks titik ialah sintaks yang digunakan untuk mengakses sifat dan kaedah struktur dan objek. Dengan menggunakan sintaks titik, kita boleh terus menggunakan sifat objek atau struktur atau memanggil kaedahnya untuk mengendalikan dan memproses data. Sintaks yang ringkas dan intuitif ini menjadikan bahasa Go lebih mudah dan cekap dalam pengaturcaraan.
dmeo code
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)
Apakah sintaks dan apakah maksud (*int) dan (s)?
Anda telah menentukan jenis di sini:
type SpinLock int32
Tetapi anda akan memanggil kaedah dalam pakej atom menggunakan spesifikasi berikut:
func CompareAndSwapInt32(addr *int32, old, new int32) (swapped bool)
Jadi untuk menghantar pembolehubah s jenis SpinLock ke CompareAndSwapInt32 kaedah anda perlu memberitahu pengkompil bahawa s< /strong> boleh digunakan sebagai int32, ini dipanggil dolang dan penukaran :
convertedValue := TargetType(variable)
Belajar Pengaturcaraan Serentak dalam Go, ia menggunakan penukaran pembolehubah s daripada jenis *SpinLock kepada *int32< 的老式方法strong>, pendekatan yang lebih moden mungkin:
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) }
Atas ialah kandungan terperinci Apakah jenis pergi dan sintaks titik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!