gpt4 book ai didi

go - 如何打印函数的返回值?

转载 作者:IT王子 更新时间:2023-10-29 01:55:51 25 4
gpt4 key购买 nike

这是我的函数定义,它返回一个字符串

"addClassIfActive": func(tab string, ctx *web.Context) string

我正在尝试像这样打印它:

<a href="/home/"{{ printf "%s" addClassIfActive "home" .Context }}>Home</a>

当我尝试打印时,http 响应被终止。

我做错了什么?

返回一个 bool 值,然后使用 if 有效,我仍然很好奇如何打印从函数返回的字符串

最佳答案

您遇到的问题是 "home".Context 将是 printf 的第 3 个和第 4 个参数,并且不是 addClassIfActive 的参数。 addClassIfActive 的返回值成为 printf 的第二个参数。

但解决方案很简单:您不必使用 printf 进行打印。

如果你的函数只返回一个字符串,你可以简单地打印它:

{{addClassIfActive "home" .Context}}

完整的工作示例:

package main

import (
"html/template"
"os"
)

type Context struct {
Active bool
}

var templateFuncs = template.FuncMap{
"addClassIfActive": func(tab string, ctx *Context) string {
if ctx.Active {
return tab + " content"
}

// Return nothing
return ""
},
}

var htmlTemplate = `{{addClassIfActive "home" .Context}}`

func main() {
data := map[string]interface{}{
"Context": &Context{true}, // Set to false will prevent addClassIfActive to print
}

// We create the template and register out template function
t := template.New("t").Funcs(templateFuncs)
t, err := t.Parse(htmlTemplate)
if err != nil {
panic(err)
}

err = t.Execute(os.Stdout, data)
if err != nil {
panic(err)
}

}

输出:

home content

Playground

关于go - 如何打印函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com