是否可以使用匿名函数更新结构中的值?在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")
答案 0 :(得分:5)
Go是静态类型的,其中python是动态类型的。这意味着在Go中,您必须声明(或让编译器推断)每个变量的类型,并且它必须始终保持该类型。因此,您无法将var mylabel = $("label[for='input[name=LargestMeeting]:checked']").text();
alert(mylabel)
属性(键入为Inspect
)指定为lambda函数。
根据您的问题,目前还不完全清楚您希望它如何运作。以下是您可以做的一个例子:
string
然后您可以这样使用它:
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
的指针,然后返回它的值。使用其中一种。
Here它在操场上。
答案 1 :(得分:1)
您当然可以将匿名函数定义为结构的属性,但类型必须是完整的函数签名,而不仅仅是函数的返回值。
type Info struct {
Inspect func(string) string
}
func Assign() Info {
i := &Info{}
i.Inspect = func(id string) string {
return fmt.Sprintf("/api/%s/inspect", id)
}
return *i
}
func main() {
temp := Assign()
tempID := temp.Inspect("test")
fmt.Println(tempID)
}