gpt4 book ai didi

algorithm - 不能在 time.AfterFunc 的参数中使用(属于)类型 func() 的函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:35 25 4
gpt4 key购买 nike

如果不遇到几个嵌套函数问题,我不知道如何解决这个 Go 算法问题。其中之一是,“不能在返回参数中使用 func 文字(类型 func())作为类型 func() 字符串”

我现在使用的解决方案是:

// Write a function that takes in 2 numbers (a, b) and a function.
// It should execute the function after a milliseconds,
// and then execute the function again after b milliseconds.

package main

import "time"

func newFunc(b int, fn func() string) func() string {
return func() {
time.AfterFunc(time.Duration(b)*time.Second, fn)
}
}

func solution10(a, b int, fn func() string) string {
f := newFunc(b, fn)
time.AfterFunc(time.Duration(a)*time.Second, f)
}

我将 solution10 的返回类型指定为字符串,因为我将传入的函数将返回一个字符串。也不确定这是否正确。我如何称呼此解决方案的示例:

func yourFunc() string {
return "Hello world"
}

solution10(10, 100, yourFunc);

如果有人可以向我解释为什么会出现该错误(我传递的每个函数的返回类型似乎都是正确的),我会很高兴。或者如果有人可以为此提供正确的解决方案,那么我可以学习如何解决这些类型的闭包相关问题的技巧吗?

最佳答案

因为 time.AfterFunc 需要一个 func(),但是您使用的是 func() 字符串

如果你想调用一个 func() string 你可以把它包装起来

time.AfterFunc(time.Duration(b)*time.Second, func() {
fn()
})

关于algorithm - 不能在 time.AfterFunc 的参数中使用(属于)类型 func() 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54083815/

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