Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Berbilang Tugasan daripada Tatasusunan dalam Go?

Bagaimana untuk Mencapai Berbilang Tugasan daripada Tatasusunan dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 11:35:01360semak imbas

How to Achieve Multiple Assignments from Arrays in Go?

Berbilang Tugasan daripada Tatasusunan dalam Go

Dalam Python, membongkar daripada tatasusunan boleh dilakukan secara elegan dengan tugasan seperti:

a, b = "foo;bar".split(";")

Go tidak menyokong pembungkusan/pembongkaran umum sedemikian. Walau bagaimanapun, terdapat beberapa cara untuk mencapai berbilang tugasan.

Fungsi Tersuai:

Satu pendekatan ialah mencipta fungsi tersuai yang mengembalikan berbilang nilai, seperti:

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

Anda kemudian boleh menetapkan terus daripada fungsi panggil:

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

Argumen Penunjuk Variadik:

Pilihan lain ialah menggunakan argumen penuding variadic:

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

Ini membolehkan anda menetapkan nilai kepada berbilang pembolehubah:

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

Pilihan Pendekatan:

Pendekatan fungsi tersuai mungkin lebih mudah dibaca untuk senario biasa di mana anda ingin memisahkan dan menetapkan hanya dua pembolehubah. Untuk senario tatasusunan yang lebih kompleks atau bersaiz pembolehubah, pendekatan hujah penuding variadic mungkin lebih fleksibel.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Berbilang Tugasan daripada Tatasusunan dalam Go?. 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