-2

我的所有变量都存储为字符串。例如var boolVar = "false"。Go 中是否有一些包用于返回值的数据类型boolVar

我可以想到使用 if-elsestrconv然后测试返回的有点麻烦的方法,但我想知道是否某些包已经提供了这个功能。error

var boolVar = "false"
var type = "string"

if _, err := strconv.ParseBool(boolVar); err == nil {
  type = "bool"
}
4

2 回答 2

0

您的问题没有任何灵丹妙药的解决方案,您应该逐一检查所有类型。

于 2020-08-23T03:51:10.203 回答
-1

首先,go 不是为这些要求而构建的,但是有一个包可以满足您的要求:go eval 记住它只能 eval expr 而不能像 python 中的 eval 这样的代码。

package main

import (
    "fmt"

    "github.com/apaxa-go/eval"
)

func main() {

    str := "int64(10*(1.1+2))"
    exp, err := eval.ParseString(str, "")
    if err != nil {
        fmt.Println(err)
    }
    val, err := exp.EvalToInterface(nil)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Printf("%v %T", val, val)
}
于 2020-08-23T03:49:50.230 回答