首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >golang中MetaMessage(mm)的使用

golang中MetaMessage(mm)的使用

原创
作者头像
用户6954299
发布2026-05-06 18:28:00
发布2026-05-06 18:28:00
50
举报

MetaMessage
MetaMessage

MetaMessage(mm)是一個結構化數據交換協議。自描述、自約束、自示例,實現了無損數據交換,是一種原生適配 AI + 人類 + 機器的下一代通用協議。

在golang中,使用mm非常簡單。

首先安裝下mm `go get github.com/metamessage/metamessage`

一個簡單的示例:

代码语言:javascript
复制
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等序列化方式了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档