go_test2
package main
import (
"github.com/gin-gonic/gin"
"html/template"
"net/http"
"time"
)
type Address struct {
Mobile string
Email string
}
type News struct {
Title string
Content string
}
func FormatUnixTime(unixtime int64) string {
// 纳nano 纳米nanometer 纳秒nanosecond
unixtimeObj := time.Unix(unixtime, 0) // 秒 纳秒 将int64类型的时间戳转为Time对象
ret := unixtimeObj.Format("2006-01-02 15:04:05")
return ret
}
func main() {
r := gin.Default()
// 8.自定义模板函数
// r.SetFuncMap要在r.LoadHTMLGlob之前
r.SetFuncMap(template.FuncMap{
"FormatUnixTime": FormatUnixTime,
})
// 0.加载templates文件夹下所有子文件夹下的文件
// **是一个通配符,表示匹配任意数量的子目录。* 表示匹配任意字符
r.LoadHTMLGlob("templates/**/*")
// 9.配置静态web目录:配置后可访问静态资源
// relativePath翻译:相对路径
// 第一个参数是网址,第二个是静态资源的根目录(映射目录)
r.Static("/static", "./static")
// 1.map嵌套结构体
// 2.templates下的文件夹下的html如何引入,define-end定义模板名称
// 3.将后台数据赋值给模板中变量
r.GET("/home", func(c *gin.Context) {
c.HTML(200, "default/home.html", gin.H{
"name": "张艺卓",
"password": "123",
"address": &Address{
Mobile: "15239889618",
Email: "2694551335@qq.com",
},
})
})
// 4.模板中if-else-end
/*
eq如果 arg1 == arg2 则返回真
ne如果 arg1!=arg2则返回真
lt如果 arg1< arg2 则返回真
le如果 arg1<= arg2则返回真
gt如果arg1>arg2则返回真
ge如果 arg1 >= arg2 则返回真
*/
r.GET("/admin/home", func(c *gin.Context) {
c.HTML(200, "admin/home.html", map[string]interface{}{
"name": "卓卓",
"password": "123",
"score": 80,
})
})
// 5.模板中循环数据,循环结构体,还有range-else-end。
// ,正常有值循环,当循环体为空时走else
r.GET("/news", func(c *gin.Context) {
c.HTML(http.StatusOK, "default/news.html", gin.H{
"news": []News{
News{
"新闻1",
"内容1",
},
News{
"新闻2",
"内容2",
},
News{
"新闻3",
"内容3",
},
},
"slice": []int{},
})
})
// 6.with-end解构结构体,赋值给.
r.GET("/admin/news", func(c *gin.Context) {
c.HTML(200, "admin/news.html", gin.H{
"news": News{
"标题1",
"新闻1",
},
})
})
// 7.模板函数,自定义模板函数
r.GET("/template_func", func(c *gin.Context) {
var timeObj = time.Now()
var unixtime = timeObj.Unix() // int64
c.HTML(200, "default/template_func.html", gin.H{
"slice": []int{1, 2, 3, 4, 5},
"string": "张艺卓",
"unixtime": unixtime,
// 加载templates文件夹下所有子文件夹下的文件"string": "张艺卓",
})
})
// 8.模板嵌套,静态文件
r.GET("/test", func(c *gin.Context) {
c.HTML(200, "default/test.html", gin.H{})
})
// 更改端口
r.Run(":8081")
}
作者:cloud-2-jane
出处:https://www.cnblogs.com/cloud-2-jane/p/18502640
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架