如何高效方便地解析Go中的简单消息?

时间:2013-03-27 06:07:21

标签: parsing go

以下是一条消息示例:

User: tbone
Location: /whatever
Time: 23:23:23

This is a little message.

它是HTTP-和其他协议 - ish:标题后跟一个空行和消息正文。

解析这个最简单有效的方法是什么?标准text/scanner对我来说很好看。如果我能更好地处理空白,我会很容易使用它。也就是说,在标题中,它应该忽略冒号周围的空格,但让我知道单词和换行符之间的空格。我还需要知道消息正文何时开始。

扫描仪可能是工作的正确工具吗?有更好的策略吗?我是否应该编写自己的小解析器,一次沿着一个角色(有时两个)进行游戏并建立我的数据结构?这是我想避免的那种不便,但我可以这样做。

顺便说一句,我控制了消息格式。是否有更好的消息格式可以简化任务?

1 个答案:

答案 0 :(得分:5)

文本/扫描程序的开销太大(在程序员时间内)用于这种简单的格式。

net / http使用net/textproto,您也可以使用它。寻找MIMEHeader和ReadMIMEHeader

如果您需要比MIMEHeader可以包含的更复杂的东西,我会考虑使用JSON。