在Golang模板中使用struct方法

马克西姆·卡丘罗夫斯基(Maxim Kachurovskiy)

Go模板中的Struct方法通常被称为与公共结构属性相同的方法,但是在这种情况下它不起作用:http : //play.golang.org/p/xV86xwJnjA

{{with index . 0}}
  {{.FirstName}} {{.LastName}} is {{.SquareAge}} years old.
{{end}}  

错误:

executing "person" at <.SquareAge>: SquareAge is not a field
of struct type main.Person

同样的问题:

{{$person := index . 0}}
{{$person.FirstName}} {{$person.LastName}} is
  {{$person.SquareAge}} years old.

与之相反,这有效:

{{range .}}
  {{.FirstName}} {{.LastName}} is {{.SquareAge}} years old.
{{end}}

如何在{{with}}和{{$ person}}示例中调用SquareAge()方法?

莫默

如先前在从Go模板调用方法中所回答的那样,该方法由

func (p *Person) SquareAge() int {
    return p.Age * p.Age
}

仅在type上可用*Person

由于您无需PersonSquareAge方法中更改对象,因此只需将接收器从更改p *Personp Person,它将与您之前的切片一起使用。

或者,如果您更换

var people = []Person{
    {"John", "Smith", 22},
    {"Alice", "Smith", 25},
    {"Bob", "Baker", 24},
}

var people = []*Person{
    {"John", "Smith", 22},
    {"Alice", "Smith", 25},
    {"Bob", "Baker", 24},
}

也可以。

工作示例1:http//play.golang.org/p/NzWupgl8Km

工作示例2:http//play.golang.org/p/lN5ySpbQw1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Golang直接在模板中使用json

来自分类Dev

如何在golang模板中使用除法?

来自分类Dev

无法在派生的模板化类中使用struct?

来自分类Dev

可以在此golang代码中使用较少的`struct`s吗?

来自分类Dev

在Golang的HTML模板中使用Vue.js

来自分类Dev

Golang,从struct调用方法

来自分类Dev

索引中struct的Golang模板属性

来自分类Dev

在OpenCL中使用Struct

来自分类Dev

模板化的类构造函数在struct中使用错误的重载

来自分类Dev

在C ++中使用模板

来自分类Dev

在结构中使用模板

来自分类Dev

在模板中使用or语句

来自分类Dev

在Django模板中使用<

来自分类Dev

方法中使用的静态模板成员数组sizeof

来自分类Dev

如何在Django模板中使用__repr__方法?

来自分类Dev

如何在类的方法参数中使用模板

来自分类Dev

如何在Django模板中使用生成器方法?

来自分类Dev

如何在模板助手中使用Meteor方法

来自分类Dev

如何在CodeFluent实体模板中使用Linq扩展方法?

来自分类Dev

在一类中使用模板和虚方法的C ++

来自分类Dev

如何在类的方法参数中使用模板

来自分类Dev

在Golang中使用Sudosh

来自分类Dev

在Golang中使用库

来自分类Dev

在模板类中使用模板函数

来自分类Dev

在golang html模板中访问{{range。}}范围之外的struct变量

来自分类Dev

在Struct中使用“ let”-Swift

来自分类Dev

在python中使用struct pack

来自分类Dev

在ActionMailer预览中使用Struct

来自分类Dev

在播放模板中使用JavaScript