golang中MetaMessage(mm)的使用
【摘要】 MetaMessage(mm)是一個結構化數據交換協議。自描述、自約束、自示例,實現了無損數據交換,是一種原生適配 AI + 人類 + 機器的下一代通用協議。
在golang中,使用mm非常簡單。

MetaMessage(mm)是一個結構化數據交換協議。自描述、自約束、自示例,實現了無損數據交換,是一種原生適配 AI + 人類 + 機器的下一代通用協議。
在golang中,使用mm非常簡單。
首先安裝下mm `go get
github.com/metamessage/metamessage`
一個簡單的示例:
package main
import (
"fmt"
mm "github.com/metamessage/metamessage"
)
func main() {
// 從結構體編碼
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
data, err := mm.EncodeFromObject(p)
if err != nil {
panic(err)
}
fmt.Printf("Encoded: %x\n", data)
// 解碼到結構體
var decoded Person
err = mm.Decode(data, &decoded)
if err != nil {
panic(err)
}
fmt.Printf("Decoded: %+v\n", decoded)
// 從 JSONC 編碼
jsoncStr := `{"name": "Bob", "age": 25}`
data2, err := mm.EncodeFromJSONC(jsoncStr)
if err != nil {
panic(err)
}
// 解碼到 JSONC
jsoncOut, err := mm.DecodeToJSONC(data2)
if err != nil {
panic(err)
}
fmt.Println("JSONC:", jsoncOut)
}
通常我們只需要使用四個接口就夠了:
- `EncodeFromObject(in any) ([]byte, error)`: 從結構體編碼
- `EncodeFromJSONC(in string) ([]byte, error)`: 從 JSONC 字符串編碼
- `Decode(in []byte, out any) error`: 解碼到結構體
- `DecodeToJSONC(in []byte) (string, error)`: 解碼到 JSONC 字符串
mm能夠實現各語言間數據的精準傳遞,不丟失結構、類型等信息,可以完美重建數據結構,可以替代傳統的json、protobuf、messagepack等序列化方式了。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)