为了账号安全,请及时绑定邮箱和手机立即绑定

无法找到函数 Marshal()

无法找到函数 Marshal()

Go
呼如林 2021-09-10 16:20:02
我正在编写用于生成 ICMP 数据包的小代码。为此,我正在关注golang net package 中的代码。我确定了以下用于 ICMP 数据包生成的代码:   109          c, err := Dial(tt.net, tt.raddr)   110          if err != nil {   111              t.Fatalf("Dial failed: %v", err)   112          }   113          c.SetDeadline(time.Now().Add(100 * time.Millisecond))   114          defer c.Close()   115     116          typ := icmpv4EchoRequest   117          if net == "ip6" {   118              typ = icmpv6EchoRequest   119          }   120          xid, xseq := os.Getpid()&0xffff, i+1   121          wb, err := (&icmpMessage{   122              Type: typ, Code: 0,   123              Body: &icmpEcho{   124                  ID: xid, Seq: xseq,   125                  Data: bytes.Repeat([]byte("Go Go Gadget Ping!!!"), 3),   126              },   127          }).Marshal()   128          if err != nil {   129              t.Fatalf("icmpMessage.Marshal failed: %v", err)   130          }   131          if _, err := c.Write(wb); err != nil {   132              t.Fatalf("Conn.Write failed: %v", err)   133          }我无法理解此代码中的以下内容:Marshal()未包含在net 包文档中,请让我知道如何找到此函数以及为什么它未包含在 net 包中。请解释我的第 121 行(icmpMessage结构和函数调用,因为这些未在此文件中定义)。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信