很抱歉,我的问题解释得不够好。 我一直试图在我的主要功能的直径消息处理程序功能handlePLA中访问和使用接收到的AVP数据,但没有输出。 我尝试通过
全局访问它type PLAAnswer struct {
SessionID datatype.UTF8String `avp:"Session-Id"`
OriginHost datatype.DiameterIdentity `avp:"Origin-Host"`
OriginRealm datatype.DiameterIdentity `avp:"Origin-Realm"`
DestinationHost datatype.DiameterIdentity `avp:"Destination-Host"`
DestinationRealm datatype.DiameterIdentity `avp:"Destination-Realm"`
ResultCode datatype.Unsigned32 `avp:"Result-Code"`
LocationEstimate datatype.OctetString `avp:"Location-Estimate"`
AgeOfLocationEstimate datatype.Unsigned32 `avp:"Age-Of-Location-Estimate"`
}
var loc PLAAnswer
func HandlePLA(done chan PLAAnswer) diam.HandlerFunc {
return func(c diam.Conn, m *diam.Message) {
pla := PLAAnswer{}
if err := m.Unmarshal(&pla); err != nil {
log.Printf("Failed to decode response message ")
return
}
loc = pla
fmt.Println(pla) // This print the data
}
}
主要功能
var loc diameter.PLAAnswer
func main() {
fmt.Println(loc)
}
但是,HandlePLA返回函数中的fmt.Println(pla)会产生预期的数据,但是主函数中的fmt.Println(loc)不会产生任何结果。
{UTF8String{session;4034522457},Padding:2 DiameterIdentity{server},Padding:2 DiameterIdentity{go-diameter},Padding:1 DiameterIdentity{g
mlc},Padding:0 DiameterIdentity{cumucore-diameter},Padding:3 Unsigned32{2001} OctetString{0x533335c2b033382731352e33372c20573538c2b0343
52732312e3737},Padding:0 Unsigned32{3600}}
任何想法,我如何可以将数据作为全局变量访问。