Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh membongkar kepingan dalam Go Like Python?

Bagaimanakah saya boleh membongkar kepingan dalam Go Like Python?

Susan Sarandon
Susan Sarandonasal
2024-11-12 21:50:02856semak imbas

How Can I Unpack Slices in Go Like Python?

Menyingkap Misteri Pembongkaran Array dalam Go

Pendekatan elegan Python terhadap pelbagai tugasan daripada tatasusunan telah membuatkan ramai pembangun Go mendambakan penyelesaian yang serupa . Walaupun Go mungkin tidak menawarkan persamaan langsung, terdapat pelbagai strategi untuk mencapai pembongkaran kepingan pada tugasan.

Go vs. Python

Tidak seperti Python, sintaks tugasan Go tidak menyokong pembongkaran langsung kepingan. Ini menimbulkan cabaran apabila cuba untuk menetapkan berbilang nilai yang dikembalikan oleh operasi pisah, seperti dalam contoh:

x := strings.Split("foo;bar", ";")
a, b := x[0], x[1]

Penyelesaian

Untuk mengatasi had ini, pelbagai pendekatan wujud :

1. Fungsi Nyahpek Tersuai:

Tentukan fungsi tersuai untuk mengendalikan pembongkaran, mengembalikan berbilang nilai:

func splitLink(s, sep string) (string, string) {
    x := strings.Split(s, sep)
    return x[0], x[1]
}

Fungsi ini kemudiannya boleh digunakan seperti berikut:

name, link := splitLink("foo\thttps://bar", "\t")

2. Argumen Penunjuk Variadic:

Gunakan fungsi dengan argumen penuding variadic untuk membongkar kepingan:

func unpack(s []string, vars... *string) {
    for i, str := range s {
        *vars[i] = str
    }
}

Yang membenarkan sintaks berikut:

var name, link string
unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)

Sementara penyelesaian ini menyediakan penyelesaian, perlu diingat bahawa Go tidak menyokong pembungkusan/pembongkaran umum seperti yang dilaksanakan dalam Python. Pilihan pendekatan bergantung pada kes penggunaan khusus dan kebolehbacaan yang diingini.

Atas ialah kandungan terperinci Bagaimanakah saya boleh membongkar kepingan dalam Go Like Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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