卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章35022本站已运行393

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

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: %vn", customSortString(order, s))
}

func customSortString(order string, s string) string {
    sort.Slice([]byte(s), func(a, b int) bool {
        fmt.Printf("order: %vn", 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:

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

卓越飞翔博客
上一篇: 如何使用 Gio 设置标题栏图标
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏