自定义包调用另一个自定义包内struct实现方法的问题

问题已解决

我在一个包里定义了一个struct PackageHead, 该方法实现了Marshal方法,目的是把PackageHead序列化,返回一个[]byte,在同一个包使用这个方法输出结果正常,但是假如我在包b,声明一个 PackageHead 变量,然后调用Marshal方法,结果就是空
示例代码:

//调用正常输出
package main
type PackageHead struct {
    StartFlag   byte
    Frag        byte
    Len         uint16
    Cmd         uint16
}
//序列化
func (pHead *PackageHead) Marshal() []byte
//反序列化
func (pHead *PackageHead) Unmarshal(b []byte)

fun main(){
    head := PackageHead{0xff, 0x00, 184, 0}
    bytehead := head.Marshal()
    fmt.Println("bytehead: ", bytehead)
}

假如以上代码去掉 fun main 变成package A

//调用不正常输出
package B

fun test(req []byte){

    var head A.PackageHead
    //示例中包头6个字节
    head.Unmarshal(req[:6])
    bytehead := head.Marshal()
    fmt.Println("bytehead: ", bytehead)
}

head中值都正常,但是这样输出就为空了,这是怎么回事?

共 1 个回复


stevenldj

你的代码至少要能运行吧,否则人家怎么帮你找问题

# 0