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

为什么 binary.Read() 那么聪明?

以下代码

var headA, headB byte

binary.Read(file, binary.LittleEndian, &headA)

binary.Read(file, binary.LittleEndian, &headB)

var xxx unit32

binary.Read(file, binary.LittleEndian, &xxx)

为什么 binary.Read(file, binary.LittleEndian, &xxx) 知道你读的是文件的大小而不是其他

正在回答

2 回答


【蜘蛛侠TG@abin789】-4601
【蜘蛛侠TG@abin789】-4602
【蜘蛛侠TG@abin789】-4603
【蜘蛛侠TG@abin789】-4604
【蜘蛛侠TG@abin789】-4605
【蜘蛛侠TG@abin789】-4606
【蜘蛛侠TG@abin789】-4607
【蜘蛛侠TG@abin789】-4608
【蜘蛛侠TG@abin789】-4609
【蜘蛛侠TG@abin789】-4610
【蜘蛛侠TG@abin789】-4611
【蜘蛛侠TG@abin789】-4612
【蜘蛛侠TG@abin789】-4613
【蜘蛛侠TG@abin789】-4614
【蜘蛛侠TG@abin789】-4615
【蜘蛛侠TG@abin789】-4616
【蜘蛛侠TG@abin789】-4617
【蜘蛛侠TG@abin789】-4618
【蜘蛛侠TG@abin789】-4619
【蜘蛛侠TG@abin789】-4620
【蜘蛛侠TG@abin789】-4621
【蜘蛛侠TG@abin789】-4622
【蜘蛛侠TG@abin789】-4623
【蜘蛛侠TG@abin789】-4624
【蜘蛛侠TG@abin789】-4625
【蜘蛛侠TG@abin789】-4626
【蜘蛛侠TG@abin789】-4627
【蜘蛛侠TG@abin789】-4628
【蜘蛛侠TG@abin789】-4629
【蜘蛛侠TG@abin789】-4630
【蜘蛛侠TG@abin789】-4631
【蜘蛛侠TG@abin789】-4632
【蜘蛛侠TG@abin789】-4633
【蜘蛛侠TG@abin789】-4634
【蜘蛛侠TG@abin789】-4635
【蜘蛛侠TG@abin789】-4636
【蜘蛛侠TG@abin789】-4637
【蜘蛛侠TG@abin789】-4638
【蜘蛛侠TG@abin789】-4639
【蜘蛛侠TG@abin789】-4640
【蜘蛛侠TG@abin789】-4641
【蜘蛛侠TG@abin789】-4642
【蜘蛛侠TG@abin789】-4643
【蜘蛛侠TG@abin789】-4644
【蜘蛛侠TG@abin789】-4645
【蜘蛛侠TG@abin789】-4646
【蜘蛛侠TG@abin789】-4647
【蜘蛛侠TG@abin789】-4648
【蜘蛛侠TG@abin789】-4649
【蜘蛛侠TG@abin789】-4650
【蜘蛛侠TG@abin789】-4651
【蜘蛛侠TG@abin789】-4652
【蜘蛛侠TG@abin789】-4653
【蜘蛛侠TG@abin789】-4654
【蜘蛛侠TG@abin789】-4655
【蜘蛛侠TG@abin789】-4656
【蜘蛛侠TG@abin789】-4657
【蜘蛛侠TG@abin789】-4658
【蜘蛛侠TG@abin789】-4659
【蜘蛛侠TG@abin789】-4660
【蜘蛛侠TG@abin789】-4661
【蜘蛛侠TG@abin789】-4662
【蜘蛛侠TG@abin789】-4663
【蜘蛛侠TG@abin789】-4664
【蜘蛛侠TG@abin789】-4665
【蜘蛛侠TG@abin789】-4666
【蜘蛛侠TG@abin789】-4667
【蜘蛛侠TG@abin789】-4668
【蜘蛛侠TG@abin789】-4669
【蜘蛛侠TG@abin789】-4670
【蜘蛛侠TG@abin789】-4671
【蜘蛛侠TG@abin789】-4672
【蜘蛛侠TG@abin789】-4673
【蜘蛛侠TG@abin789】-4674
【蜘蛛侠TG@abin789】-4675
【蜘蛛侠TG@abin789】-4676
【蜘蛛侠TG@abin789】-4677
【蜘蛛侠TG@abin789】-4678
【蜘蛛侠TG@abin789】-4679
【蜘蛛侠TG@abin789】-4680
【蜘蛛侠TG@abin789】-4681
【蜘蛛侠TG@abin789】-4682
【蜘蛛侠TG@abin789】-4683
【蜘蛛侠TG@abin789】-4684
【蜘蛛侠TG@abin789】-4685
【蜘蛛侠TG@abin789】-4686
【蜘蛛侠TG@abin789】-4687
【蜘蛛侠TG@abin789】-4688
【蜘蛛侠TG@abin789】-4689
【蜘蛛侠TG@abin789】-4690
【蜘蛛侠TG@abin789】-4691
【蜘蛛侠TG@abin789】-4692
【蜘蛛侠TG@abin789】-4693
【蜘蛛侠TG@abin789】-4694
【蜘蛛侠TG@abin789】-4695
【蜘蛛侠TG@abin789】-4696
【蜘蛛侠TG@abin789】-4697
【蜘蛛侠TG@abin789】-4698
【蜘蛛侠TG@abin789】-4699
【蜘蛛侠TG@abin789】-4700
【蜘蛛侠TG@abin789】-4701
【蜘蛛侠TG@abin789】-4702
【蜘蛛侠TG@abin789】-4703
【蜘蛛侠TG@abin789】-4704
【蜘蛛侠TG@abin789】-4705
【蜘蛛侠TG@abin789】-4706
【蜘蛛侠TG@abin789】-4707
【蜘蛛侠TG@abin789】-4708
【蜘蛛侠TG@abin789】-4709
【蜘蛛侠TG@abin789】-4710
【蜘蛛侠TG@abin789】-4711
【蜘蛛侠TG@abin789】-4712
【蜘蛛侠TG@abin789】-4713
【蜘蛛侠TG@abin789】-4714
【蜘蛛侠TG@abin789】-4715
【蜘蛛侠TG@abin789】-4716
【蜘蛛侠TG@abin789】-4717
【蜘蛛侠TG@abin789】-4718
【蜘蛛侠TG@abin789】-4719
【蜘蛛侠TG@abin789】-4720
【蜘蛛侠TG@abin789】-4721
【蜘蛛侠TG@abin789】-4722
【蜘蛛侠TG@abin789】-4723
【蜘蛛侠TG@abin789】-4724
【蜘蛛侠TG@abin789】-4725
【蜘蛛侠TG@abin789】-4726
【蜘蛛侠TG@abin789】-4727
【蜘蛛侠TG@abin789】-4728
【蜘蛛侠TG@abin789】-4729
【蜘蛛侠TG@abin789】-4730
【蜘蛛侠TG@abin789】-4731
【蜘蛛侠TG@abin789】-4732
【蜘蛛侠TG@abin789】-4733
【蜘蛛侠TG@abin789】-4734
【蜘蛛侠TG@abin789】-4735
【蜘蛛侠TG@abin789】-4736
【蜘蛛侠TG@abin789】-4737
【蜘蛛侠TG@abin789】-4738
【蜘蛛侠TG@abin789】-4739
【蜘蛛侠TG@abin789】-4740
【蜘蛛侠TG@abin789】-4741
【蜘蛛侠TG@abin789】-4742
【蜘蛛侠TG@abin789】-4743
【蜘蛛侠TG@abin789】-4744
【蜘蛛侠TG@abin789】-4745
【蜘蛛侠TG@abin789】-4746
【蜘蛛侠TG@abin789】-4747
【蜘蛛侠TG@abin789】-4748
【蜘蛛侠TG@abin789】-4749
【蜘蛛侠TG@abin789】-4750
【蜘蛛侠TG@abin789】-4751
【蜘蛛侠TG@abin789】-4752
【蜘蛛侠TG@abin789】-4753
【蜘蛛侠TG@abin789】-4754
【蜘蛛侠TG@abin789】-4755
【蜘蛛侠TG@abin789】-4756
【蜘蛛侠TG@abin789】-4757
【蜘蛛侠TG@abin789】-4758
【蜘蛛侠TG@abin789】-4759
【蜘蛛侠TG@abin789】-4760
【蜘蛛侠TG@abin789】-4761
【蜘蛛侠TG@abin789】-4762
【蜘蛛侠TG@abin789】-4763
【蜘蛛侠TG@abin789】-4764
【蜘蛛侠TG@abin789】-4765
【蜘蛛侠TG@abin789】-4766
【蜘蛛侠TG@abin789】-4767
【蜘蛛侠TG@abin789】-4768
【蜘蛛侠TG@abin789】-4769
【蜘蛛侠TG@abin789】-4770
【蜘蛛侠TG@abin789】-4771
【蜘蛛侠TG@abin789】-4772
【蜘蛛侠TG@abin789】-4773
【蜘蛛侠TG@abin789】-4774
【蜘蛛侠TG@abin789】-4775
【蜘蛛侠TG@abin789】-4776
【蜘蛛侠TG@abin789】-4777
【蜘蛛侠TG@abin789】-4778
【蜘蛛侠TG@abin789】-4779
【蜘蛛侠TG@abin789】-4780
【蜘蛛侠TG@abin789】-4781
【蜘蛛侠TG@abin789】-4782
【蜘蛛侠TG@abin789】-4783
【蜘蛛侠TG@abin789】-4784
【蜘蛛侠TG@abin789】-4785
【蜘蛛侠TG@abin789】-4786
【蜘蛛侠TG@abin789】-4787
【蜘蛛侠TG@abin789】-4788
【蜘蛛侠TG@abin789】-4789
【蜘蛛侠TG@abin789】-4790
【蜘蛛侠TG@abin789】-4791
【蜘蛛侠TG@abin789】-4792
【蜘蛛侠TG@abin789】-4793
【蜘蛛侠TG@abin789】-4794
【蜘蛛侠TG@abin789】-4795
【蜘蛛侠TG@abin789】-4796
【蜘蛛侠TG@abin789】-4797
【蜘蛛侠TG@abin789】-4798
【蜘蛛侠TG@abin789】-4799
【蜘蛛侠TG@abin789】-4800

0 回复 有任何疑惑可以回复我~

不是因为binary.Read()聪明,而是语言开发者本身“聪明”,为了减少我们的开发时间,他们已经对读取文件可能会出现的类型进行了switch-case了。

详情可见下面源码:

switch data := data.(type) {
case *bool:
   *data = b[0] != 0
case *int8:
   *data = int8(b[0])
case *uint8:
   *data = b[0]
case *int16:
   *data = int16(order.Uint16(bs))
case *uint16:
   *data = order.Uint16(bs)
case *int32:
   *data = int32(order.Uint32(bs))
case *uint32:
   *data = order.Uint32(bs)
case *int64:
   *data = int64(order.Uint64(bs))
case *uint64:
   *data = order.Uint64(bs)
case []bool:
   for i, x := range bs { // Easier to loop over the input for 8-bit values.
      data[i] = x != 0
   }
case []int8:
   for i, x := range bs {
      data[i] = int8(x)
   }
case []uint8:
   copy(data, bs)
case []int16:
   for i := range data {
      data[i] = int16(order.Uint16(bs[2*i:]))
   }
case []uint16:
   for i := range data {
      data[i] = order.Uint16(bs[2*i:])
   }
case []int32:
   for i := range data {
      data[i] = int32(order.Uint32(bs[4*i:]))
   }
case []uint32:
   for i := range data {
      data[i] = order.Uint32(bs[4*i:])
   }
case []int64:
   for i := range data {
      data[i] = int64(order.Uint64(bs[8*i:]))
   }
case []uint64:
   for i := range data {
      data[i] = order.Uint64(bs[8*i:])
   }
}

(吐槽:为什么代码语言不能选择golang)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么 binary.Read() 那么聪明?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信