editor php Banana akan memperkenalkan anda cara mentakrifkan urutan langkah dalam Golang. Dalam pembangunan perisian, selalunya perlu melakukan beberapa siri operasi atau tugasan dalam susunan tertentu. Golang menyediakan cara yang ringkas dan cekap untuk mentakrif dan melaksanakan urutan langkah. Dengan menggunakan goroutine dan saluran, kami boleh melaksanakan berbilang langkah serentak dan memastikan bahawa ia dilaksanakan dalam susunan yang ditentukan. Dalam artikel ini, kami akan meneroka cara untuk mentakrifkan urutan langkah dan menunjukkan penggunaannya menggunakan kod contoh. Sama ada anda seorang pemula Golang atau pembangun berpengalaman, artikel ini akan memberikan anda maklumat berharga dan petua praktikal. Mari lihat!
Saya nak tulis ujian protokol. Idea semasa saya adalah untuk menentukan urutan langkah. Setiap langkah termasuk trigger
和 expectation
- 例如触发 msga
并期望 msgb
.
type series struct { steps []step }
Apa yang saya tidak suka tentang ini series
不明确:我必须按顺序创建切片,然后希望它永远不会混乱,并依赖它,或者 sort
ialah ia kemudiannya perlu melaksanakan fungsi isihan, yang sama sekali tidak perlu.
Apakah reka bentuk yang baik yang mentakrifkan secara rasmi series
dan menjadikannya eksplisit dengan cara ini?
Idea terbaik saya sekarang ialah mencipta peta dengan indeks int
:
type Series struct { Steps map[int]Step } series := Series{ Steps: map[int]Step{ 0: Step{}, 1: Step{}, 2: Step{}, ... } }
Pilihan lain mungkin ialah membina sendiri senarai pautan. go
Tidak dilaksanakan (setahu saya). Rasanya pelik perlu membina sendiri untuk ini. Tetapi penyelesaian sedemikian juga kehilangan sedikit fungsi eksplisit: pada asasnya, anda sentiasa perlu menyemak imbas senarai terpaut untuk mendapatkan keseluruhan jujukan (cth. "apa itu langkah 4").
Selain menggunakan peta, anda masih boleh menggunakan kepingan dan menggunakan Keying Teks kompaun:
var steps = []step{ 0: step{}, 1: step{}, ... }
Spesifikasi: Teks majmuk Penerangan terperinci:
compositelit = literaltype literalvalue . literaltype = structtype | arraytype | "[" "..." "]" elementtype | slicetype | maptype | typename [ typeargs ] . literalvalue = "{" [ elementlist [ "," ] ] "}" . elementlist = keyedelement { "," keyedelement } . keyedelement = [ key ":" ] element . key = fieldname | expression | literalvalue . fieldname = identifier . element = expression | literalvalue .
Seperti yang anda lihat, bahagian keyedelement
可能包含可选的 key ":"
.
...Kunci ditafsirkan sebagai nama medan untuk literal struct, indeks untuk literal tatasusunan dan kepingan, dan kunci untuk literal peta.
Perhatikan bahawa anda boleh mencampurkan elemen berkunci dan "tidak berkunci", dan ia tidak perlu berturut-turut. Selain itu, jika kunci tiada daripada hirisan literal, indeks akan menjadi indeks + 1 sebelumnya.
type step struct{} var steps = []*step{ 0: &step{}, 1: &step{}, &step{}, // implicit index: 2 5: &step{}, } fmt.println(steps)
Output di atas (cuba di pergi taman permainan):
[0x559008 0x559008 0x559008 <nil> <nil> 0x559008]
Kunci mereka juga mungkin "tidak teratur", bermakna ini juga sah:
var steps = []*Step{ 5: &Step{}, 0: &Step{}, 1: &Step{}, &Step{}, // implicit index: 2 }
Keluaran ini adalah sama. Cubalah di pergi taman permainan.
Atas ialah kandungan terperinci golang: bagaimana untuk menentukan urutan langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!