Kaedah aplikasi parameter tatasusunan fungsi Golang

PHPz
Lepaskan: 2023-05-16 11:31:40
asal
1636 orang telah melayarinya

Kaedah aplikasi parameter tatasusunan fungsi Golang

Golang ialah bahasa pengaturcaraan sumber terbuka yang mudah dipelajari, cekap dan selamat serta mempunyai ciri pengumpulan sampah. Tatasusunan ialah jenis data yang sangat asas dalam Golang Tatasusunan juga merupakan cara biasa untuk menulis atur cara sebagai parameter fungsi. Artikel ini akan memperkenalkan kaedah aplikasi tatasusunan sebagai parameter fungsi di Golang, dengan harapan dapat memberi inspirasi kepada pembaca dalam aplikasi fungsi Golang.

  1. Array diluluskan sebagai parameter mengikut nilai

Apabila tatasusunan diluluskan sebagai nilai fungsi, parameter formal fungsi akan mendapat salinan yang sama dengan nilai parameter sebenar Pengubahsuaian kepada parameter formal tidak menjejaskan parameter sebenar. Kaedah ini sesuai untuk situasi di mana anda perlu melakukan beberapa operasi mudah pada tatasusunan dalam fungsi.

Sebagai contoh, kod berikut:

package main

import "fmt"

func modifyArr(arr [3]int) {
    for i := 0; i < len(arr); i++ {
        arr[i] += i
    }
}

func main() {
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Printf("Before modified, arr = %v
", arr)
    modifyArr(arr)
    fmt.Printf("After modified, arr = %v
", arr)
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

Before modified, arr = [1 2 3]
After modified, arr = [1 2 3]
Salin selepas log masuk

Ia boleh didapati bahawa walaupun tatasusunan diubah suai dalam fungsi modifyArr, tatasusunan dicetak dalam nilai fungsi utama, nilai tatasusunan tidak berubah.

  1. Array dihantar sebagai penunjuk kepada parameter

Apabila tatasusunan dihantar sebagai penunjuk kepada fungsi, fungsi boleh mengubah suai kumpulan parameter sebenar secara langsung sesuai untuk situasi di mana Situasi di mana operasi yang lebih kompleks dilakukan dalam fungsi.

Berikut ialah contoh kod:

package main

import "fmt"

func modifyArrByPointer(arr *[3]int) {
    for i := 0; i < len(arr); i++ {
        arr[i] += i
    }
}

func main() {
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Printf("Before modified, arr = %v
", arr)
    modifyArrByPointer(&arr)
    fmt.Printf("After modified, arr = %v
", arr)
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

Before modified, arr = [1 2 3]
After modified, arr = [1 3 5]
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat, dalam fungsi modifyArrByPointer, kami mengubah suai tatasusunan melalui penunjuk operasi.

  1. Array diluluskan sebagai parameter hirisan

Apabila tatasusunan diluluskan sebagai parameter hirisan fungsi, semua operasi penghirisan tatasusunan boleh digunakan di dalam fungsi . Kelebihan kaedah ini ialah ia tidak akan Menyalin keseluruhan tatasusunan, sebaliknya hanya menghantar rujukan. Kaedah ini sesuai untuk senario di mana penghirisan diperlukan untuk beroperasi pada tatasusunan.

Sebagai contoh, kod berikut:

package main

import "fmt"

func modifyArrBySlice(arr []int) {
    for i := 0; i < len(arr); i++ {
        arr[i] += i
    }
}

func main() {
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Printf("Before modified, arr = %v
", arr)
    modifyArrBySlice(arr[:])
    fmt.Printf("After modified, arr = %v
", arr)
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

Before modified, arr = [1 2 3]
After modified, arr = [1 3 5]
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat, dalam parameter fungsi modifyArrBySlice, kami menggunakan arr [:] untuk melepasi tatasusunan Menghiris, dengan cara ini, tatasusunan boleh dihiris.

  1. Medan tatasusunan dalam struktur sebagai parameter

Di Golang, struktur juga boleh mengandungi medan jenis tatasusunan. Apabila menghantar struktur dalam fungsi, anda boleh memilih untuk menghantar rujukan atau nilai struktur untuk beroperasi pada tatasusunan.

Contohnya, kod berikut:

package main

import "fmt"

type ArrStruct struct {
    arr [3]int
}

func modifyArrByStruct(s ArrStruct) {
    for i := 0; i < len(s.arr); i++ {
        s.arr[i] += i
    }
}

func modifyArrByStructPointer(s *ArrStruct) {
    for i := 0; i < len(s.arr); i++ {
        s.arr[i] += i
    }
}

func main() {
    var s ArrStruct = ArrStruct{[3]int{1, 2, 3}}
    fmt.Printf("Before modified, arr = %v
", s.arr)
    modifyArrByStruct(s)
    fmt.Printf("After modified by value, arr = %v
", s.arr)
    modifyArrByStructPointer(&s)
    fmt.Printf("After modified by pointer, arr = %v
", s.arr)
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

Before modified, arr = [1 2 3]
After modified by value, arr = [1 2 3]
After modified by pointer, arr = [1 3 5]
Salin selepas log masuk

Seperti yang anda lihat, apabila kita melepasi struktur sebagai nilai fungsi , fungsi itu tidak boleh diubah suai Nilai pembolehubah ahlinya, tetapi apabila struktur diluluskan sebagai penunjuk kepada fungsi, pembolehubah ahlinya boleh diubah suai.

Ringkasan:

Di Golang, terdapat tiga cara untuk menggunakan tatasusunan sebagai parameter fungsi: hantaran nilai, hantaran penunjuk dan hantaran hirisan. Hantaran nilai sesuai untuk senario operasi mudah, hantaran penunjuk sesuai untuk senario yang memerlukan operasi kompleks di dalam fungsi, dan hantaran hirisan sesuai untuk senario yang memerlukan operasi menghiris pada tatasusunan. Di samping itu, dalam struktur, jika tatasusunan ialah pembolehubah ahli struktur, anda boleh memilih untuk menggunakan penunjuk struktur untuk lulus parameter untuk pengubahsuaian. Dalam aplikasi sebenar, pembangun harus memilih kaedah pemindahan parameter yang sesuai mengikut keperluan khusus.

Atas ialah kandungan terperinci Kaedah aplikasi parameter tatasusunan fungsi Golang. 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
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!