go - 在Go中用变量解密字符串

标签 go

我正在尝试解密包含我的结构变量的字符串。 我希望我的字符串中的变量在解密后被正确的值替换。

我的结果是我得到了带有变量的字符串,但没有被它们的值替换。

怎么做?

这是我的代码。

type (
Test struct {
    Login   string `form:"login"`
    Email string `form:"email"`
    Age  string `form:"age"`
})

在我的函数中

tst:= Test{}
textToEncrypt := 
"login:tst.Login;email:tst.Email;timestampunix:1563804616"
textEncrypted := service.EncryptText(textToEncrypt, keysToEncrypt)

他加密后,我有一个加密字符串,到这里就OK了。

当我调用我的解密函数时,他像上面那样返回字符串,但我想要字符串内部变量的值,变量结构的值?

这可能吗?

最佳答案

如前所述,标准库中没有任何函数可以解析您的格式。您似乎使用分号和冒号作为这种格式的分隔符。考虑到这一点,我们可以创建自定义代码来解析它。

splitString = strings.Split(str, ";")

example.Login = GetLastIndex(splitString[0])
example.Email = GetLastIndex(splitString[1])
example.Age = GetLastIndex(splitString[2])

func GetLastIndex(str string) string {
    return str[strings.LastIndex(str, ":")+1:]
}

Playground 示例:https://play.golang.org/p/UTrazkQ5EI-

关于go - 在Go中用变量解密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183183/

相关文章:

regex - 查找不在另一个文本字符串中的文本?

error-handling - 如果将所有错误都改为包含文件名、函数名和行号的样式,会出现什么潜在问题吗?

go - 如何使用 net Conn Read 方法继续阅读

c - 预编译 Go 程序中依赖 C 来提高速度的部分

go - 附加到 for 循环中的 slice 并产生意外结果

ssl - 为什么我会收到超大记录 TLS 错误?

datetime - 如何使用golang将UTC转换为印度本地时间

pointers - 为什么 Go 禁止获取 (&) map 成员的地址,而允许 (&) slice 元素?

string - 将 int64(来自 UnixNano)转换为位置时间字符串

go - 为什么 Golang 需要接口(interface)?