Bagaimana untuk Menyalurkan Sekeping Slice sebagai Hujah yang Dibongkar kepada Fungsi Variadik dalam Go?

Barbara Streisand
Lepaskan: 2024-10-28 08:20:29
asal
596 orang telah melayarinya

How to Pass a Slice of Slices as Unpacked Arguments to a Variadic Function in Go?

Membongkar Slice of Slices sebagai Variadic Arguments

Masalah:
Apabila cuba menghantar sekeping hirisan sebagai hujah yang tidak dibungkus kepada variadic fungsi, ralat kompilasi berlaku. Ralat menunjukkan ketidakupayaan untuk menetapkan jenis hirisan sumber kepada jenis parameter variadik destinasi.

Penjelasan:
Menurut spesifikasi Go, fungsi dengan parameter variadic jenis .. .T menjangkakan satu keping jenis []T sebagai hujah. Walau bagaimanapun, dalam kes sekeping hirisan, [][]T, syarat ini tidak dapat dipenuhi.

Penyelesaian:
Untuk menyelesaikan isu ini, sekeping baharu jenis yang diperlukan []T mesti dicipta dan diisi dengan nilai yang dikehendaki. Potongan baharu ini kemudiannya boleh dihantar tanpa pembungkusan menggunakan operator elipsis (...).

Contoh:

<code class="go">package main

import (
    "fmt"
)

func unpack(args ...interface{}) {
    fmt.Println(len(args))
}

func main() {
    sliceOfSlices := [][]int{
        []int{1, 2},
        []int{101, 102},
    }

    // Create a new slice of type []interface{}
    sliceOfInterfaces := []interface{}{}
    for _, v := range sliceOfSlices {
        sliceOfInterfaces = append(sliceOfInterfaces, v)
    }

    unpack(sliceOfInterfaces...) // Pass unpacked values
}</code>
Salin selepas log masuk

Output:

2
Salin selepas log masuk

Dalam contoh ini, fungsi unpack() dipanggil dengan elemen unpacked sliceOfSlices sebagai argumen. Fungsi len() digunakan untuk menunjukkan bilangan argumen yang diluluskan, yang menunjukkan bahawa kedua-dua elemen kepingan bersarang dibongkar.

Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Sekeping Slice sebagai Hujah yang Dibongkar kepada Fungsi Variadik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!