Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah fungsi yang dipanggil dalam Go mengakses parameter fungsi panggilan?

Bagaimanakah fungsi yang dipanggil dalam Go mengakses parameter fungsi panggilan?

PHPz
PHPzke hadapan
2024-02-09 21:15:09470semak imbas

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 ""
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam