登录
首页 >  Golang >  Go问答

如何转换函数类型?

来源:stackoverflow

时间:2024-04-14 15:39:26 417浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何转换函数类型?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我想在expend中使用upcase作为变量,但它说“不能使用'upcase(s1)'(type string)作为类型func(string) string。 如何转换 upcase 类型?或者我需要做什么才能使错误消失?

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := "test func"
    s1 := ""
    test := expand(s, upCase(s1))
    fmt.Print(test)
}
func expand(s string, f func(string) string) string {
    s1 := "test"
    var s2 string
    if strings.Contains(s, s1) {
        // todo 字符串中s1的值更改为f(s1)的值
        s1 = f(s1)
        strings.Replace(s1, s, s2, -1)
    } else {
        return ""
    }
    return s2
}

func upCase(s string) string {
    s = strings.ToUpper(s)
    return s
}

解决方案


您在调用 expand 时调用 upcase 函数(因此它返回一个传递给 expand 函数的字符串)。您需要传入函数:

test := expand(s, upcase)

您当前的代码 test := expand(s, upcase(s1)) 与执行的操作相同:

v := upCase(s1)
test := expand(s, v)

即,您只需调用返回字符串的 upcase(s1) ,然后将该字符串传递给 expand ,它需要一个函数,而不是字符串作为其 2. 参数。

今天关于《如何转换函数类型?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>