Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Merujuk Parameter Yang Sama Berbilang Kali Dengan Cekap dalam fmt.Sprintf?
Dengan Cekap Merujuk Parameter Yang Sama dalam fmt.Sprintf
Apabila bekerja dengan fmt.Sprintf, adalah perkara biasa untuk menghadapi situasi di mana anda perlu rujuk parameter yang sama beberapa kali dalam rentetan format. Walaupun pendua parameter mungkin kelihatan mudah, ia boleh menjadi tidak cekap dan memperkenalkan kod berlebihan.
Penyelesaian: Menggunakan Pengindeksan Argumen Eksplisit
Untuk menangani isu ini, fmt.Sprintf menyediakan penyelesaian yang dikenali sebagai "pengindeksan hujah eksplisit." Teknik ini membolehkan anda merujuk kepada hujah tertentu dengan indeksnya dalam rentetan format. Dengan menggunakan penentu format [n] sejurus sebelum kata kerja pemformatan, anda boleh menentukan argumen yang harus diformatkan.
Sebagai contoh, pertimbangkan kod berikut:
package main import "fmt" func main() { v := "X" // Use explicit argument indexing to reference v four times fmt.Printf( `CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v); CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v);`, v, v, v, v, ) }
Dalam contoh ini, daripada melepasi v empat kali, kami menggunakan [1]v dalam rentetan format, yang secara berkesan merujuk argumen pertama empat kali. Hasilnya ialah rentetan format yang ringkas dan cekap:
CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X); CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
Faedah Pengindeksan Argumen Eksplisit
Menggunakan pengindeksan hujah eksplisit menawarkan beberapa faedah:
Kesimpulan
Pengindeksan hujah eksplisit dalam fmt.Sprintf menyediakan cara yang cekap dan fleksibel untuk merujuk parameter yang sama berbilang kali dalam rentetan format. Teknik ini bukan sahaja memudahkan kod tetapi juga meningkatkan prestasi, menjadikannya alat yang berharga untuk bekerja dengan pemformatan rentetan dalam Go.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Merujuk Parameter Yang Sama Berbilang Kali Dengan Cekap dalam fmt.Sprintf?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!