pdf ISO 32000-1的第 7.5.5 节说
\n\n\n\n\nPDF 文件的预告片使合格的读者能够快速找到交叉引用表和某些特殊对象。符合要求的读者应从末尾阅读 PDF 文件。文件的最后一行应仅包含文件结束标记 %%EOF。前面两行应按顺序包含每行一个关键字 startxref 和解码流中从文件开头到最后一个交叉引用部分中 xref 关键字开头的字节偏移量。startxref 行前面应有 Trailer\n 字典,由关键字 Trailer 后跟一系列用双尖括号括起来的键值对组成 (<<\xe2\x80\xa6>>)(使用 LESS-大于符号 (3Ch) 和大于符号 (3Eh))。
\n
但我发现了这个pdf文件不遵循这个规则,尽管它可以通过pdfviewer打开没有任何问题。具体来说,该文件的最后 5 行是
\n\ntrailer\n<</Size 352/ID[<9257C760F49955A23047D72C37914E79> <82F1302E14912449A9BB43536F853CD6>]>>\nstartxref\n116\n%%EOF\nRun Code Online (Sandbox Code Playgroud)\n\n显然这个预告片字典是不正确的,因为标准规定这个字典必须包含一个作为Root键的条目,而这个预告片没有。然后我发现偏移量116指向另一个外部参照表,该表几乎位于文件的开头,后面是另一个预告片,其中确实包含Root entry.
xref\n352 24\n0000000016 00000 n\n0000001914 00000 n\n0000001980 00000 n\n0000002147 00000 n\n... ...\ntrailer\n<</Size 376/Root 353 0 R/Info 351 0 R/ID[<9257C760F49955A23047D72C37914E79><82F1302E14912449A9BB43536F853CD6>]/Prev 4183097>>\nRun Code Online (Sandbox Code Playgroud)\n 给定两个字符串aand b,有时我想确定以下三个语句中的哪一个:a < b, a == bora > b是真的。
在像 C 或 C++ 这样的语言中,我将v在调用相应的函数或方法后得到一个 int 值。然后我可以通过检查是否v < 0,v == 0或来确定上述哪些陈述是正确的v > 0。
但是在 Go 中,我必须至少进行两次比较(例如,先测试a < b然后再测试a == b)才能找出三个陈述中的哪一个是正确的。
我的问题是 Go 中有没有一种方法可以让我只做一个比较?
原来这个功能叫做三路比较。