golang gin 数据类型

本文介绍了如何在Gin框架中使用数组、结构体、Map和切片,并展示了如何将它们与HTML模板结合,展示在HTTP响应中。通过模块化实现,展示了不同类型数据的处理和渲染方法。
字符串(无)
数组数组 + 结构体
MapMap + 结构体
切片Slice

在这里插入图片描述

main.go

package main

import (
    "root/module2"
    "github.com/gin-gonic/gin"
)

func main() {

    r := gin.Default()
    r.LoadHTMLGlob("template/**/*")

    r.GET("/arr", module2.ArrController) //数组
    r.GET("/arrstruct", module2.ArrStruct) //数组 + 结构体
    r.GET("/map", module2.MapController) //Map
    r.GET("/mapstruct", module2.MapStruct) //Map + 结构体
    r.GET("/slice", module2.SliceController) //切片

    r.Run(":8080")
}

module2.go

package module2

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

type UserInfo struct {
    Id      int
    Name    string
    Age     int
    Address string
}

func ArrController(c *gin.Context) {

    //数组
    arr := [3]int{1, 2, 3}
    c.HTML(http.StatusOK, "module2/arr.html", arr)
}

func ArrStruct(c *gin.Context) {

    //数组 + 结构体
    arrstruct := [3]UserInfo{
        {
            Id:      0,
            Name:    "秀儿",
            Age:     6,
            Address: "深圳",
        },
        {
            Id:      1,
            Name:    "老六",
            Age:     7,
            Address: "广州",
        },
    }
    c.HTML(http.StatusOK, "module2/arrstruct.html", arrstruct)
}

func MapController(c *gin.Context) {

    //Map
    mapdata1 := map[string]string{"name": "Kitty", "age": "18"}
    mapdata2 := map[string]int{"age": 16}
    mapData := map[string]interface{}{"data1": mapdata1, "data2": mapdata2}
    c.HTML(http.StatusOK, "module2/map.html", mapData)

}

func MapStruct(c *gin.Context) {

    //Map + 结构体
    mapStruct := map[string]UserInfo{
        "user": {
            Id:      1,
            Name:    "老六",
            Age:     7,
            Address: "广州",
        },
    }
    c.HTML(http.StatusOK, "module2/mapstruct.html", mapStruct)
}

func SliceController(c *gin.Context){

    //切片Slice
    sliceData := []int{1,2,3,4,5,6,7,8,9}
    c.HTML(http.StatusOK, "module2/slice.html", sliceData)
}

arr.html

{{define "module2/arr.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>数组的两种遍历</h2>
    {{range .}}
        {{.}}<br>
    {{end}}

    {{range $i, $v := .}}
        {{$i}}
        {{$v}}<br>
    {{end}}
</body>
</html>
{{end}}

arrstruct.html

{{define "module2/arrstruct.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{range .}}
        {{.Id}}
        {{.Name}}
        {{.Age}}
        {{.Address}}
        <br>
    {{end}}<br>

    {{range $i, $v := .}}
        {{$v.Id}}
        {{$v.Name}}
        {{$v.Age}}
        {{$v.Address}}
        <br>
    {{end}}
</body>
</html>
{{end}}

map.html

{{define "module2/map.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- {{.name}}
    {{.age}} -->

    {{.data1}}
    <hr>
    {{.data2}}
</body>
</html>
{{end}}

mapstruct.html

{{define "module2/mapstruct.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{.user}}
</body>
</html>
{{end}}

slice.html

{{define "module2/slice.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{range .}}
        {{.}}
    {{end}}
    <hr>
    {{range $v := .}}
        {{$v}}
    {{end}}
</body>
</html>
{{end}}

运行

vscode 左上角文件file,保存全部

根目录root右键,终端Terminal运行:

go run main.go

浏览器分别输入 :

127.0.0.1:8080/arr
127.0.0.1:8080/arrstruct
127.0.0.1:8080/map
127.0.0.1:8080/mapstruct
127.0.0.1:8080/slice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值