Dalam Python, interpolasi rentetan selalunya dilakukan menggunakan fungsi format(), yang membenarkan pemasukan nilai ke dalam templat rentetan. Dalam Go, terdapat beberapa cara untuk mencapai kefungsian yang serupa.
Pilihan yang paling mudah ialah menggunakan fungsi fmt.Sprintf, yang mengambil rentetan format dan nombor pembolehubah hujah. Argumen dimasukkan ke dalam rentetan format mengikut susunan yang muncul. Contohnya:
fmt.Sprintf("File %s had error %s", myfile, err)
Walau bagaimanapun, kaedah ini tidak membenarkan pertukaran susunan hujah dalam rentetan format, yang kadangkala diperlukan untuk tujuan pengantarabangsaan (I18N).
Go juga menyediakan pakej teks/templat, yang membolehkan interpolasi rentetan yang lebih kompleks. Walau bagaimanapun, ia memerlukan penggunaan templat, yang boleh menjadi lebih bertele-tele daripada menggunakan fmt.Sprintf.
tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}") tmpl.Execute(&msg, params)
Untuk penyelesaian yang lebih padat dan fleksibel, pertimbangkan untuk menggunakan rentetan.Jenis pengganti. Ia membolehkan anda menentukan pemetaan daripada kunci kepada rentetan gantian. Kekunci boleh dimasukkan dalam rentetan format menggunakan pendakap kerinting, dan Pengganti akan menggantikannya dengan rentetan gantian yang sepadan.
r := strings.NewReplacer("{file}", file, "{error}", err) fmt.Println(r.Replace("File {file} had error {error}"))
Kaedah ini membenarkan pertukaran susunan hujah dalam rentetan format dan boleh diperluaskan dengan mudah untuk mengendalikan pelbagai jenis nilai.
Akhir sekali, pakej fmt Go juga menyokong indeks hujah eksplisit, yang boleh digunakan beberapa kali untuk merujuk hujah yang sama. Ini membolehkan cara yang lebih ringkas untuk memasukkan nilai yang sama ke dalam rentetan format berbilang kali.
fmt.Printf("File %d has error %d\n", 1, 1)
Pendekatan ini memberikan fleksibiliti paling banyak dari segi susunan dan memasukkan nilai yang sama beberapa kali.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Fungsi `string.format()` Python dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!