GO语言前端框架-模板渲染2
比较函数
在gin框架模板渲染中,布尔函数会将任何类型的零值视为假,其余视为真。
常用的比较函数
我们来看一下有哪些常用的比较函数:
我们在模板渲染中是不支持符号(=,<,>···)比较的,所以我们需要使用到比较函数 go eq 如果 arg1 == arg2 则返回真 ne 如果 arg1 != arg2 则返回真 lt 如果 arg1 < arg2 则返回真 le 如果 arg1 <= arg2 则返回真 gt 如果 arg1 > arg2 则返回真 ge 如果 arg1 >= arg2 则返回真
比较函数的基本用法
在使用比较函数时,我们经常与条件判断一起。 html {
{if eq a b}} //如果a等于b
条件判断
GO模板中主要有以下几种语法进行条件判断
```go //如果条件判断为真,则渲染T1,否则不展示 { {if pipeline}} T1 { {end}} // 多条件判断 { {if pipeline}} T1 { {else}} T0 { {end}}
{
{if pipeline}} T1 {
{else if pipeline}} T0 {
{end}} 举例
go //如果score大于80分。则展示“优秀”字样 {
{if gt .score 80}} 优秀 {
{else if gt .score 60}} 及格 {
{else}} 不及格 {
{end}} ```
range (循环)
Go 的模板语法中使用 range 关键字进行遍历,有以下两种写法,其中pipeline 的值必须是数组、切片、字典或者通道。
gin //写法一 {
{range $key,$value := .obj}} {
{$value}} {
{end}} // 如果 pipeline 的值其长度为 0,不会有任何输出 //写法二 {
{$key,$value := .obj}} {
{$value}} {
{else}} pipeline 的值其长度为 0 {
{end}}
当我们在后端传一个数组时,我们需要使用go模板遍历出来,因此需要使用到range关键字
```gin // 后端路由,数据交互 router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "hobby": []string{"唱", "跳", "rap","篮球"}, }) }) // 前端html,将hobby数组遍历 { {range $key,$value := .hobby}}
{ {$value}}
{ {end}} ```
with
当有多层的变量名的时候,为了方便,我们可以使用with来进行减少代码量和重复的变量名。
gin //路由进行前后端数据交互 user := UserInfo{ Name: "ikun", Gender: "男", Age: 22, } router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "user": user, }) })
当我们没使用with之前需要输出数据时
```gin
{ {.user.Name}}
{ {.user.Gender}}
{ {.user.Age}}
``` 当我们学习gin框架两年半后,学会了with
gin {
{with .user}} <h2>姓名:{
{.Name}}</h2> <h3>性别:{
{.user.Gender}}</h3> <h4>年龄:{
{.Age}}</h4> {
{end}}
预定义函数
如果感兴趣,我们可以查资料了解一下预定义函数和自定义模板。
本文正在参加技术专题18期-聊聊Go语言框架