Go语言函数类型学习实践:代码相关技术咨询
Go语言函数类型代码修正与核心知识点解析
嘿,看起来你在尝试Go里的函数类型传递,思路完全没问题!只是最后一行代码有个小拼写失误,我帮你修正并拆解下相关知识点:
首先,你的代码末尾截断的部分是变量名拼写错误——gree应该是greet,这是你前面用test1返回值赋值的变量名。下面是修正后的完整可运行代码:
package main import "fmt" func myfn1(i string) { fmt.Println(i) } func myfunc2(firstName string, lastName string) string { return "Hello " + firstName + " " + lastName + "!" } func test(do func(string), val string) { do(val) } func test1(t func(string,string), fname string, lname string) string { opt := t(fname, lname) return opt } func main() { test(myfn1, "Aishu") greet := test1(myfunc2, "Aishu","S") fmt.Println(greet) // 修正拼写错误:gree → greet }
接下来聊聊你用到的核心知识点——Go的函数类型与函数作为参数传递:
- Go里的函数是一等公民,意味着函数可以作为参数、返回值,也可以赋值给变量。你定义的
test和test1函数,就是把函数类型作为参数来接收的典型例子。 - 比如
test的第一个参数do func(string),它定义了一个函数类型:接收一个string类型参数,没有返回值。myfn1的签名完全匹配这个类型,所以可以直接传递给test。 test1的第一个参数t func(string,string)则是另一种函数类型:接收两个string参数,返回一个string值,这正好和myfunc2的签名对应,所以能成功调用并拿到返回值。
你的代码逻辑本身是对的,只是最后一行的小笔误导致代码截断报错,修正后就能正常运行啦~
内容的提问来源于stack exchange,提问作者Aishu
相关产品推荐
相关产品推荐

