Apa perbedaan antara go-Cobra PersistentFlags dan Flags?

Aug 20 2020

Saya mencoba untuk mencari tahu apa perbedaan antara PersistentFlags dan Flags di go-Cobra, dan kapan kita harus menggunakan masing-masing. Saya telah membaca ini tetapi saya tidak memahaminya.

Jawaban

3 torek Aug 20 2020 at 11:48

Saat menggunakan Cobra Anda menentukan perintah tingkat atas:

prog

Perintah tingkat atas ini memiliki sub-perintah. Sebagai contoh, misalkan kita memiliki tiga sub-perintah, init, start, dan stop.

prog init [-i]         # initialize, but don't start anything: -i means ignore
prog start [-f] [-q]   # after init, start: -f=fast, -q=quiet 
prog stop [-f]         # stop: -f=force

The -ibendera hanya untuk init, jadi kami menambahkan -ibendera ke initsubcommand.

The -qbendera hanya untuk start, jadi kami menambahkan -qbendera ke startsubcommand, dan sebagainya.

Sekarang kami ingin menambahkan mode debug ke setiap perintah. Kita bisa masuk ke setiap perintah dan menambahkan sebuah --debugbendera ... tapi kita juga bisa mengatur sebuah bendera persisten untuk perintah root. Bendera persisten ini sekarang akan tersedia di setiap sub-perintah.

Jika Anda memiliki sub-perintah yang memiliki sub-sub-perintah, Anda dapat menyetel bendera persisten di sub-perintah untuk membuat bendera itu muncul di setiap sub-sub-perintah, dan seterusnya.