Golang에서 함수를 다른 함수에 인수로 전달할 때 유형 서명은 전달된 함수의 서명은 수신 함수의 예상 서명과 일치해야 합니다. 코드에서 다음 함수를 인수로 전달하려고 합니다.
UpperCaseHandler RepeatHandler
그러나 메시지 처리기 함수에 대해 예상되는 유형 서명은 다음과 같습니다.
type MessageHandler func(MessageDelivery) (interface{}, error)
보시다시피 , 예상되는 메시지 핸들러 함수는 MessageDelivery 구조체를 인수로 사용하고 인터페이스{}와 오류를 반환합니다. 그러나 함수는 다음과 같이 정의됩니다.
func UpperCaseHandler(md asl.MessageDelivery) { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) } func RepeatHandler(md asl.MessageDelivery) { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) }
함수에 반환 값(인터페이스{} 및 오류)이 누락되었습니다. 이 문제를 해결하려면 예상 서명과 일치하도록 함수를 수정해야 합니다. 이를 수행하는 방법은 다음과 같습니다.
func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error} { s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery) return nil, nil } func RepeatHandler(md asl.MessageDelivery) (interface{}, error} { s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery) return nil, nil }
누락된 반환 값을 추가하면 이제 함수가 예상 서명과 일치하며 " 오류가 발생하지 않고 해당 값을 다른 함수에 인수로 전달할 수 있습니다. 함수(func() 유형)를 인수의 유형으로 사용할 수 없습니다." 오류.
위 내용은 Golang에서 함수를 전달할 때 '함수(func() 유형)를 인수의 유형으로 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!