Editor PHP Xiaoxin berkongsi teknik praktikal, iaitu cara menambah elemen baharu secara automatik kepada parameter berfungsi apabila kepingan (Slice) berkembang. Slices ialah struktur data yang fleksibel, tetapi boleh memberikan beberapa cabaran apabila digunakan dalam parameter fungsi. Artikel ini akan memperkenalkan kaedah ringkas untuk menambah elemen baharu secara automatik kepada parameter berfungsi apabila hirisan berkembang dengan menggunakan parameter pembolehubah (Argumen Variadik) dan operator penyebaran (Pengendali Spread). Teknik ini boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Mari belajar bersama-sama!
Adakah terdapat cara untuk mengautomasikan ini?
package main import "fmt" func main() { var a []string a = append(a, "this", "this2", "this3") increaseArguments(a) a = append(a, "this4") increaseArguments(a) } func increaseArguments(b []string) { // I want, when i add new element to slice i want this function act as this // fmt.Println(b[0],b[1], b[2], b[3]) fmt.Println(b[0], b[1], b[2]) }
Adakah terdapat cara untuk menambah b[3] secara automatik sebagai hujah kepada fmt.println?
Sila ambil perhatian bahawa jika b
的类型为 []any
,您可以将其作为 fmt.println()
:
fmt.println(b...)
Tetapi kerana b
的类型是 []string
, anda tidak boleh.
Tetapi jika anda menghiris b
转换为 []any
, ia berkesan. Anda boleh melakukan ini menggunakan fungsi pembantu ini:
func convert[t any](x []t) []any { r := make([]any, len(x)) for i, v := range x { r[i] = v } return r }
Kemudian:
func increasearguments(b []string) { fmt.println(convert(b)...) }
Ini akan menghasilkan (cuba di pergi taman permainan):
this this2 this3 this this2 this3 this4
Nota: dalam convert()
中创建一个新切片不会使该解决方案变慢,因为显式传递值(如 fmt.println(b[0], b[1], b[2])
) secara tersirat mencipta kepingan.
Lihat soalan berkaitan: Bagaimana untuk menghantar nilai fungsi variadik dengan berbilang nilai pulangan?
Atas ialah kandungan terperinci Cara untuk menambah elemen baharu kepingan secara automatik pada parameter fungsi apabila kepingan itu berkembang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!