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

Tre*_*xon 4 parsing go

这是一个消息示例:

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

This is a little message.
Run Code Online (Sandbox Code Playgroud)

这是一种HTTP和其他协议 - ish:标题后跟一个空行和消息体.

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

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

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

Ask*_*sen 5

文本/扫描程序将过多的开销(在程序员时间)用于这种简单的格式.

net/http使用net/textproto,你也可以使用它.查找MIMEHeader和ReadMIMEHeader.

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