gpt4 book ai didi

go - 结构上的匿名函数

转载 作者:IT王子 更新时间:2023-10-29 01:26:22 24 4
gpt4 key购买 nike

是否可以使用匿名函数更新结构中的值?在 python 中,我将使用 lambda 执行以下操作:

inspect = lambda id: '/api/{}/inspect'.format(id)

这会将动态 id 值放入字符串中。

Go 中,我正在尝试类似他的方法:

type Info struct {
Inspect string
}

func Assign() Info {
i := &Info{}
i.Inspect = return func(id) {return fmt.Sprintf("/api/%s/inspect", id)}
return *i
}

但我想像这样更新值:

temp := Assign()
tempID := temp.Inspect("test")
fmt.Println("/api/test/inspect")

最佳答案

Go 是静态类型,而 python 是动态类型。这意味着在 Go 中,您必须为每个变量声明(或让编译器推断)一个类型,并且它必须始终保持该类型。因此,您不能将 Inspect 属性(类型为 string)分配为 lambda 函数。

根据您的问题,您并不完全清楚您希望它如何工作。不过,这是您可以执行的操作的示例:

type Info struct {
Inspect func(string) string
}

func Assign() Info {
i := Info{
Inspect: func(id string) string { return fmt.Sprintf("/api/%s/inspect", id) },
}
return i
}

然后你可以像这样使用它:

temp := Assign()
tempID := temp.Inspect("test")
fmt.Println(tempID)

也没有必要将 i 声明为指向 Info 的指针,然后返回它的值。使用其中之一。

Here它在 Playground 上。

关于go - 结构上的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45866477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com