Go语言学习之旅九--像模版传递数据,在模板中调用函数

本文介绍了如何在Go语言中向模板传递数据,包括传递基本类型、结构体和map,并展示了在模板中如何调用无参及有参函数。详细讲解了如何通过FuncMap映射自定义函数以便在模板中使用。
摘要由CSDN通过智能技术生成

1. 向模版传递数据

  • 可以在HTML中使用{ {}}获取template.Execute()第二个参数传递的值
  • 最常用的{ {.}}中的".“是指针,指向当前变量,称为"dot”
  • 在{ {}}可以有的Argument,官方给定如下
- go语法的布尔值、字符串、字符、整数、浮点数、虚数、复数,视为无类型字面常数,字符串不能跨行
- 关键字nil,代表一个go的无类型的nil值
- 字符'.'(句点,用时不加单引号),代表dot的值
- 变量名,以美元符号起始加上(可为空的)字母和数字构成的字符串,如:$piOver2和$;
  执行结果为变量的值,变量参见下面的介绍
- 结构体数据的字段名,以句点起始,如:.Field;
  执行结果为字段的值,支持链式调用:.Field1.Field2;
  字段也可以在变量上使用(包括链式调用):$x.Field1.Field2;
- 字典类型数据的键名;以句点起始,如:.Key;
  执行结果是该键在字典中对应的成员元素的值;
  键也可以和字段配合做链式调用,深度不限:.Field1.Key1.Field2.Key2;
  虽然键也必须是字母和数字构成的标识字符串,但不需要以大写字母起始;
  键也可以用于变量(包括链式调用):$x.key1.key2;
- 数据的无参数方法名,以句点为起始,如:.Method;
  执行结果为dot调用该方法的返回值,dot.Method();
  该方法必须有1到2个返回值,如果有2个则后一个必须是error接口类型;
  如果有2个返回值的方法返回的error非nil,模板执行会中断并返回给调用模板执行者该错误;
  方法可和字段、键配合做链式调用,深度不限:.Field1.Key1.Method1.Field2.Key2.Method2;
  方法也可以在变量上使用(包括链式调用):$x.Method1.Field;
- 无参数的函数名,如:fun;
  执行结果是调用该函数的返回值fun();对返回值的要求和方法一样;函数和函数名细节参见后面。
- 上面某一条的实例加上括弧(用于分组)
  执行结果可以访问其字段或者键对应的值:
      print (.F1 arg1) (.F2 arg2)
      (.StructValuedMethod "arg").Field
  • 向HTML传递字符串数据.在HTML中使用{ {.}}获取传递数据即可.所有基本类型都是使用此方式进行传递
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Title</title>
</head>
<body>
<pre>
尊敬的{
  {.}}先生/女士
    您已经被我公司录取,收到此消息后请您仔细阅读附件中"注意事项"
    再次祝您:{
  {.}}好运
</pre>
</body>
</html>
package main

import (
	"net/http"
	"html/template"
)

func welcome(w http.ResponseWriter, r *http.Request) {
   
	t, _ := template.ParseFiles("view/index.html")
	t.Execute(w, "smallming") //此处传递数据
}

func main() {
   
	server := http.Server{
   Addr: ":8090"}
	http.HandleFunc("/", welcome)
	server.ListenAndServe()
}

运行结果如下:
在这里插入图片描述
1.2传递结构体类型数据

  • 结构体的属性首字母必须大写才能被模版访问
  • 在模版中直接使用{ {.属性名}}获取结构体的属性
  • ​HTML代码如下&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值