小编And*_*ton的帖子

使用具有多个返回值的方法

我正在尝试编写一个模板(使用html / template),并向其传递带有附加一些方法的结构,其中许多方法返回多个值。有什么方法可以从模板中访问它们吗?我希望能够执行以下操作:

package main

import (
        "fmt"
        "os"
        "text/template"
)

type Foo struct {
    Name string
}

func (f Foo) Baz() (int, int) {
    return 1, 5
}

const tmpl = `Name: {{.Name}}, Ints: {{$a, $b := .Baz}}{{$a}}, {{b}}`

func main() {

    f := Foo{"Foo"}

    t, err := template.New("test").Parse(tmpl)
    if err != nil {
        fmt.Println(err)
    }

    t.Execute(os.Stdout, f)

}
Run Code Online (Sandbox Code Playgroud)

但是显然这是行不通的。周围没有办法吗?

我考虑过在我的代码中创建一个匿名结构:

data := struct {
    Foo
    a   int
    b   int
}{
    f,
    0,
    0,
}
data.a, data.b = f.Baz() …
Run Code Online (Sandbox Code Playgroud)

go go-templates

5
推荐指数
1
解决办法
1807
查看次数

标签 统计

go ×1

go-templates ×1