> 백엔드 개발 > Golang > Asl 라이브러리와 서비스를 연결할 때 내 Go 코드에서 '인수 유형으로 함수(func() 유형)를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?

Asl 라이브러리와 서비스를 연결할 때 내 Go 코드에서 '인수 유형으로 함수(func() 유형)를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-17 09:01:25
원래의
546명이 탐색했습니다.

Why Does My Go Code Produce a

"함수(func() 유형)를 인수의 유형으로 사용할 수 없습니다."

이 Go 코드는 다양한 활용을 통한 체이닝 서비스를 시연하는 것을 목표로 합니다. 메시지 소비, 메시지 게시, 메시지 회신과 같은 기능. 코드는 메시징 작업을 처리하기 위해 asl 라이브러리를 사용합니다.

코드를 실행하려고 하면 UpperCaseHandler 및 RepeatHandler 함수를 ConsumeFunc에서 asl.MessageHandler 유형의 인수로 사용할 수 없음을 나타내는 오류 메시지가 나타납니다. UpperCaser 및 Repeater 서비스의 메서드입니다.

이 문제를 해결하려면 함수 서명이 예상 형식과 일치하는지 확인해야 합니다. asl.MessageHandler 유형은 Busboy.MessageDelivery를 인수로 취하고 인터페이스{}와 오류를 반환하는 함수를 기대합니다.

type MessageHandler func(busboy.MessageDelivery) (interface{}, error)
로그인 후 복사

코드의 UpperCaseHandler 및 RepeatHandler 함수가 이 예상을 따르지 않습니다. 서명. 오류 반환 값이 부족합니다. 이 문제를 해결하려면 다음과 같이 함수를 수정하세요.

func UpperCaseHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery)
     return nil, nil
}

func RepeatHandler(md busboy.MessageDelivery) (interface{}, error) {
     s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery)
     return nil, nil
}
로그인 후 복사

오류 반환 값을 추가하고 asl.MessageHandler 서명과 적절하게 일치하도록 하면 앞서 언급한 오류가 발생하지 않고 코드가 실행되어야 합니다.

위 내용은 Asl 라이브러리와 서비스를 연결할 때 내 Go 코드에서 '인수 유형으로 함수(func() 유형)를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿