首页  >  文章  >  后端开发  >  Go 中调用的函数如何访问调用函数的参数?

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

PHPz
PHPz转载
2024-02-09 21:15:09467浏览

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

Go 中调用的函数可以通过函数参数来获取调用函数的参数。在 Go 中,参数可以通过传值或传引用的方式传递给函数,函数可以通过参数来获取调用者传递的值或指针。如果参数是值类型,函数内部的操作将会在参数的拷贝上进行,不会影响到调用者传递的原始值。如果参数是指针类型,函数内部的操作将会对指针指向的原始值进行修改。通过这种方式,函数可以访问和修改调用函数的参数,从而实现更灵活的功能。无论是值类型还是指针类型的参数,函数都可以通过参数来获取调用者传递的值或指针,并在函数内部进行相关操作。

问题内容

请参阅参考代码https://go.dev/play/p/yig2b6dkcoc(也粘贴在此处):

就像这段代码一样 - 参数顺序没有传递给 sort.slice() 函数,但它在排序包的调用 less() 方法中得到了很好的打印。

实现此功能的属性是什么?

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

解决方法

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

函数文字是闭包:它们可以引用周围函数中定义的变量。然后,这些变量在周围的函数和函数文字之间共享,并且只要可访问,它们就会一直存在。

以上是Go 中调用的函数如何访问调用函数的参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除