You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yaegi的单次Eval中同时导入包并返回结果?

在Yaegi中单次Eval获取带导入的语句执行结果

要在单次Eval()中同时完成导入操作并获取表达式的执行结果,可以通过自执行匿名函数实现——把导入逻辑和目标表达式放在函数内部,最后返回结果并立即调用该函数。示例代码如下:

v, err := i.Eval(`
    import "strings"
    func() string {
        return strings.TrimSpace(" foo ")
    }()
`)

执行后,变量v就能拿到"foo"的计算结果。

为什么之前的写法无法生效?

  • 直接在顶层写导入+表达式:Go语法不允许顶层代码出现独立的表达式语句,Yaegi遵循Go语法规则编译,因此会报错。
  • 顶层定义变量res:Yaegi的Eval仅会执行顶层变量的声明操作,但不会主动返回该变量的值,因此无法通过v获取结果。
  • 逻辑包在main()函数中:main()作为程序入口,Yaegi执行它但不会返回其内部的局部变量或计算结果,同样无法拿到目标值。

内容的提问来源于stack exchange,提问作者andig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:37:34