<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      嵐天逸見

      go的template示例

      模板定義:

      type Config struct {
      	{{- $len := len .DbConfigs -}}
      	{{- $i := 0 -}}
      	{{- range $key, $value := .DbConfigs}}
      	{{title $key}} *DbConfig ` + "`yaml:\"{{lower $key}}\"`" + `{{if lt $i (sub $len 1)}},{{end}}
      	{{- $i = add $i 1 -}}
      	{{- end}}
      }
      

      實例化模板代碼:

      // filename: a.go
      package main
      
      import (
      	"os"
      	"strings"
      	"text/template"
      
      	"github.com/stoewer/go-strcase"
      )
      
      type DbConfig struct {
      	Dsn   string `yaml:"dsn"`                   // dsn地址
      	Debug bool   `yaml:"debug" default:"false"` // 是否打開 debug
      }
      
      func main() {
      	// 定義模板函數
      	funcs := template.FuncMap{
      		"title": strings.Title,
      		"lower": strcase.SnakeCase,
      		"sub": func(a, b int) int {
      			return a - b
      		},
      		"add": func(a, b int) int {
      			return a + b
      		},
      	}
      
      	// 定義模板字符串
      	// 注意如果是模板文件,則不需要“+”連接字符串
      	tmplStr := `type Config struct {
      	{{- $len := len .DbConfigs -}}
      	{{- $i := 0 -}}
      	{{- range $key, $value := .DbConfigs}}
      	{{title $key}} *DbConfig ` + "`yaml:\"{{lower $key}}\"`" + `{{if lt $i (sub $len 1)}},{{end}}
      	{{- $i = add $i 1 -}}
      	{{- end}}
      }`
      
      	// 創建并解析模板
      	tmpl, err := template.New("config").Funcs(funcs).Parse(tmplStr)
      	// 如果是文件,改為 ParseFiles,如:ParseFiles("a.go.tpl")
      	// 注意 New 的參數必須同 ParseFiles 的保持一致,否則報錯:template: a.go: "a.go" is an incomplete or empty template
      	//tmpl, err := template.New("a.go.tpl").Funcs(funcs).ParseFiles("./a.go.tpl")
      	if err != nil {
      		panic(err)
      	}
      
      	// 定義模板數據
      	data := map[string]interface{}{
      		"DbConfigs": map[string]*DbConfig{
      			"Db": {
      				Dsn:   "dsn",
      				Debug: false,
      			},
      			"DbTest": {
      				Dsn:   "dsn",
      				Debug: false,
      			},
      		},
      	}
      
      	// 執行模板
      	err = tmpl.Execute(os.Stdout, data)
      	if err != nil {
      		panic(err)
      	}
      }
      

      執行輸出:

      # go run a.go
      type Config struct {
      	Db *DbConfig `yaml:"db"`,
      	DbTest *DbConfig `yaml:"db_test"`
      }
      

      模板文件示例:

      # cat a.go.tpl 
      package test
      {{ if gt (len .DbConfigs) 0 }}{{/*這是一個條件判斷,只有當 .DbConfigs 的長度大于 0 時,才會執行接下來的代碼*/}}
      import (
              "github.com/aaa/bbb"
      )
      {{- end }}
      
      type Config struct {
              {{- $len := len .DbConfigs -}}{{/*變量定義,$len 是 .DbConfigs 的長度*/}}
              {{- $i := 0 -}}{{/*變量定義,$i 是一個計數器,用于追蹤當前處理的是 .DbConfigs 中的第幾個元素*/}}
              {{- range $key, $value := .DbConfigs}}{{/*這是一個循環,對 .DbConfigs 中的每個元素進行處理*/}}
              {{title $key}} *DbConfig `yaml:"{{lower $key}}"`{{if lt $i (sub $len 1)}},{{end}}{{/*如果‘i小于$len - 1`,那么在字段后面添加一個逗號*/}}
              {{- $i = add $i 1 -}}{{/*更新計數器 $i 的代碼,將 $i 的值加 1*/}}
              {{- end}}
      }
      

      注意模板中“{{”后和“}}”前的橫杠“-”是用來指示刪除空格空行的。

      posted on 2024-11-04 17:41  嵐天逸見  閱讀(26)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 伊人久久大香线蕉AV网| 久久国产精品波多野结衣av| 亚洲综合色丁香婷婷六月图片 | 一区二区三区无码免费看| 久久久久久综合网天天| 亚洲精品在线少妇内射| 色婷婷欧美在线播放内射| 极品无码人妻巨屁股系列| 亚洲日韩AV秘 无码一区二区 | 国内精品人妻无码久久久影院导航 | 国产免费播放一区二区三区| 日本丰满少妇高潮呻吟| 国产熟睡乱子伦午夜视频| 岐山县| 亚洲一区二区三区在线| 国产精品av免费观看| 久久香蕉国产线看观看猫咪av| 中文字幕亚洲国产精品| 国产AV福利第一精品| 少妇愉情理伦片高潮日本| 亚洲最大成人av在线天堂网 | 中文字幕精品亚洲无线码二区| 国产av亚洲精品ai换脸电影 | 看全色黄大色黄大片 视频| 红原县| 国产成人综合色就色综合| 麻豆久久天天躁夜夜狠狠躁| 亚洲AV福利天堂在线观看| 国产成人久久精品一区二区 | 无码人妻斩一区二区三区 | 国产一区二区不卡在线| 国产亚洲一本大道中文在线| 天堂V亚洲国产V第一次| 人妻系列中文字幕精品| 亚洲精品国产美女久久久| 综合偷自拍亚洲乱中文字幕| 久久国产乱子精品免费女| 一本大道久久香蕉成人网| 国产初高中生粉嫩无套第一次 | 岛国大片在线免费播放| 高清无码在线视频|