dongren5293
2018-04-29 15:19
浏览 96
已采纳

Go中的函数类型

I'm trying to understand function types in Go, so I tried with the below code.

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)
}

And it throws below error.

  1. t(fname, lname) used as value
  2. cannot use myfunc2 (type func(string, string) string) as type func(string, string) in argument to test1

I'm not sure what I'm doing wrong.

Playground

图片转代码服务由CSDN问答提供 功能建议

我试图了解Go中的函数类型,因此我尝试了以下代码。 \ n

 包main 
 
import“ fmt” 
 
func myfn1(i字符串){
 fmt.Println(i)
} 
 
func myfunc2(名字字符串,姓氏字符串)  )string {
返回“ Hello” + firstName +“” + lastName +“!” 
} 
 
func test(do func(string),val string){
 do(val)
} 
  
func test1(t func(string,string),fname字符串,lname字符串)字符串{
 opt:= t(fname,lname)
返回opt 
} 
 
func main(){
 test(  myfn1,“ Aishu”)
问候:= test1(myfunc2,“ Aishu”,“ S”)
 fmt.Println(greet)
} 
   
 
 

并且抛出以下错误。

  1. t(fname,lname)用作值
  2. 不能使用myfunc2( 在test1的参数中输入func(string,string)string)作为func(string,string)

    我不确定 我做错了。

    游乐场

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题