2017-01-12 1 views
-1

네트워크에서 BSON 형식의 메시지 (MongoDB가 아님)를 수신하고 로컬 컴퓨터의 파일에 필드를 저장해야하는 작은 응용 프로그램을 작성하고 있습니다. 나는 메시지 마샬링을 위해 gopkg.in/mgo.v2/bson을 사용하고 있으며 정상적으로 작동합니다.bson.Binary를 Go의 [] 바이트로 변환하는 방법

하나만 제외하고 거의 모든 것이 작동합니다. 거기에 "사용자 정의"이진 필드에 메시지와 나는 그것을 별도의 파일에 저장해야합니다. 내가 사용하려고 :

var pwr = msg["pwr"].([]byte) 

을 그러나 얻었다 "오류 패닉 : 인터페이스 변환 : 인터페이스 bson.Binary하지 [] UINT8입니다."

bson.Binary를 [] 바이트로 변환하는 방법에 대한 예가 있습니까? 파일로 저장할 수 있습니까?

+0

문서를 보면 [bson.Binary'] (https://godoc.org/gopkg.in/mgo.v2/bson#Binary)는 구조체입니다. – JimB

+0

예, 그렇습니다. 그러나 pwr의 데이터 필드에 액세스하면 "pwr.Data는 정의되지 않았습니다. (유형 인터페이스 {}은 메소드가없는 인터페이스입니다.") 컴파일 타임에 오류가 발생합니다. – dtoch

+2

이것은'msg'가'map [string] 인터페이스 {}'여야 함을 의미합니다. 유형이나 컨텍스트를 추측하지 못하도록 전체 예제를 작성하십시오. – JimB

답변

0

이 당신이 원하는 않습니다

pwr := bson.Binary(msg["pwr"].(bson.Binary)).Data 

는하지만 그건 당신이 유형의 주장을해야 불변가 아니라면 [ "PWR은"] ... bson.Binary 이외의 다른 수 없습니다 MSG를 가정 먼저 (가능한 경우 형식 불일치가 발생하면 처리합니다.) 그런 다음 캐스팅하여 데이터 필드를 가져옵니다.

관련 문제