Bagaimanakah fungsi yang dipanggil dalam Go mengakses parameter fungsi panggilan?

PHPz
Lepaskan: 2024-02-09 21:15:09
ke hadapan
472 orang telah melayarinya

Go 中调用的函数如何访问调用函数的参数?

Fungsi yang dipanggil dalam Go boleh mendapatkan parameter fungsi panggilan melalui parameter fungsi. Dalam Go, parameter boleh dihantar ke fungsi mengikut nilai atau rujukan, dan fungsi boleh mendapatkan nilai atau penuding yang diluluskan oleh pemanggil melalui parameter. Jika parameter ialah jenis nilai, operasi di dalam fungsi akan dilakukan pada salinan parameter dan tidak akan menjejaskan nilai asal yang diluluskan oleh pemanggil. Jika parameter ialah jenis penunjuk, operasi di dalam fungsi akan mengubah suai nilai asal yang ditunjuk oleh penunjuk. Dengan cara ini, fungsi boleh mengakses dan mengubah suai parameter fungsi panggilan, membolehkan kefungsian yang lebih fleksibel. Sama ada jenis nilai atau parameter jenis penunjuk, fungsi boleh mendapatkan nilai atau penuding yang diluluskan oleh pemanggil melalui parameter dan melaksanakan operasi berkaitan di dalam fungsi.

Kandungan soalan

Sila rujuk kod rujukan https://go.dev/play/p/yig2b6dkcoc (juga ditampal di sini):

Sama seperti kod ini - susunan hujah tidak dihantar ke fungsi sort.slice(), tetapi ia dicetak dengan baik dalam panggilan ke kaedah less() bagi pakej sort.

Apakah sifat yang membolehkan fungsi ini?

package main

import (
    "fmt"
    "sort"
)

func main() {
    order := "abcd"
    s := "bca"
    fmt.Printf("ans: %v\n", customSortString(order, s))
}

func customSortString(order string, s string) string {
    sort.Slice([]byte(s), func(a, b int) bool {
        fmt.Printf("order: %v\n", order) // <------ How does this work? order is not passed to sort.Slice() function. 
        return s[a] < s[b]
    })
    return ""
}
Salin selepas log masuk

Penyelesaian

https://www.php.cn/link/58b7483ba899e0ce4d97ac5eecf6fa99

Tersurat fungsi ialah penutupan: ia boleh merujuk pembolehubah yang ditakrifkan dalam fungsi sekeliling. Pembolehubah ini kemudiannya dikongsi antara fungsi sekeliling dan literal fungsi, dan ia berterusan selagi ia boleh diakses.

Atas ialah kandungan terperinci Bagaimanakah fungsi yang dipanggil dalam Go mengakses parameter fungsi panggilan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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!