在Go中,我想做这样的事情.我有一个包含许多结构的大对象(使用Google的protobuf
).这是一个人为的例子:
person.name = "testing"
person.address.street = "123 test st"
person.address.city = "tester"
person.address.zip = 90210
person.billing.address.same = true
Run Code Online (Sandbox Code Playgroud)
我希望能够动态地引用一些东西.例如:
key := "person.address.zip"
fmt.Println("the value of key: " + key) // would like to get 90210
key := "person.address.city"
fmt.Println("the value of key: " + key) // would like to get "tester"
Run Code Online (Sandbox Code Playgroud)
Go有可能吗?如果是的话,我怎么能这样做?基本上,我正在创建一个只包含对象子集的报告,我希望能够创建一个映射文件,用户可以将键/值映射到一起,我的程序将输出值.我有这个在python中工作,但想尝试使用Go :)
我是 rust 的新手,并尝试在 stackoverflow 中搜索以及阅读 serde 文档 https://docs.serde.rs/serde/trait.Serialize.html和https://serde.rs/impl-serialize.html,但我有点失落。
我想使用 Tera 生成 html,而我传递给它的结构没有serde::ser::Serialize
实现trait ,我试图实现它,但它看起来不太正确。
Cargo.toml 依赖项
serde = "1.0.115"
serde_derive = "1.0.115"
serde-xml-rs = "0.4.0"
tera = "0.7.2"
Run Code Online (Sandbox Code Playgroud)
主文件
extern crate tera;
#[macro_use]
extern crate serde_derive;
extern crate serde;
use tera::Context;
use serde::ser::{Serialize, SerializeStruct, Serializer};
#[derive(Serialize, Debug)]
struct Person {
firstname: String,
lastname: String,
age: i32,
}
#[derive(Debug)]
struct Attendees {
people: Vec<Person>,
updatedOn: String,
updatedBy: String,
}
impl Serialize for Attendees {
fn serialize<S>(&self, serializer: …
Run Code Online (Sandbox Code Playgroud)