Jadi di Python dan Ruby ada operator percikan (*) untuk membongkar array sebagai argumen. Dalam Javascript ada fungsi .apply (). Apakah ada cara untuk membongkar array / slice sebagai argumen fungsi di Go? Sumber daya apa pun untuk ini akan bagus juga!
Sesuatu di sepanjang garis ini:
func my_func(a, b int) (int) {
return a + b
}
func main() {
arr := []int{2,4}
sum := my_func(arr)
}
Saya mohon maaf jika saya membuat kesalahan sintaksis / bermacam-macam. Saya baru mengenal Go.
go
argument-unpacking
eatonphil.dll
sumber
sumber
arr
bukanlah sebuah array. Ini sepotong .Jawaban:
Anda dapat menggunakan sintaks vararg yang mirip dengan C:
Sekarang Anda dapat menjumlahkan sebanyak yang Anda mau. Perhatikan yang penting
...
setelah Anda memanggilmy_func
fungsi tersebut.Contoh yang berjalan: http://ideone.com/8htWfx
sumber
Entah fungsi Anda adalah vararg, di mana Anda dapat menggunakan slice dengan
...
notasi seperti yang diperlihatkan Hunter McMillen, atau fungsi Anda memiliki sejumlah argumen tetap dan Anda dapat mengekstraknya saat menulis kode Anda.Jika Anda benar-benar ingin melakukan ini secara dinamis pada fungsi argumen jumlah tetap, Anda dapat menggunakan refleksi:
sumber
https://play.golang.org/p/2nN6kjHXIsd
Saya punya alasan untuk membongkar beberapa vars dari string [string] peta dengan tanda kutip tunggal di sekitar beberapa di antaranya maupun tanpa. Inilah logika untuk itu dan tautan putar di atas memiliki cuplikan yang berfungsi penuh.
Yang menyajikan dengan rapi untuk kueri mssql sebagai:
sumber
Tidak, tidak ada dukungan langsung untuk ini dalam bahasa ini. Python dan Ruby, serta Javascript yang Anda sebutkan; semuanya adalah bahasa dinamis / skrip. Go jauh lebih dekat dengan, misalnya, C daripada ke bahasa dinamis manapun. Fungsionalitas 'terapkan' berguna untuk bahasa dinamis, tetapi tidak banyak digunakan untuk bahasa statis seperti C atau Go,
sumber