教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 网络编程(3)

golang 网络编程(3)

发布时间:2022-02-24   编辑:jiaochengji.com
教程集为您提供golang 网络编程(3)等资源,欢迎您收藏本站,我们将为您提供最新的golang 网络编程(3)资源

square-gopher.png

首先要进行模板替换,需要引入<code>text/template</code>这个包,其中提供了有关模板的方法。

<pre><code class="lang-go hljs">type Tut struct{ Title string Author string } </code></code></pre>

先定义数据结构,我们可能总是习惯用我们熟知语言例如 java 中对应的类来理解 go 语言中结构,这就错了,在学习一门外语的时候我们总是在头脑中先翻译为中文,然后通过中文含义去理解外语。这样做是不对的,当然我们中其他语言语法作为基础去学习 go 语言,当然也就是失去 go 语言本身含义和他的美了。

<pre><code class="lang-go hljs">const tmpl = `Tut - Title: {{.Title}}, Author: {{.Author}}` </code></code></pre>

定义一个我们要替换的文本,这里<code>{{.Title}}</code>和<code>{{.Author}}</code>都是占位符。

<pre><code class="lang-go hljs">t := template.New("tut") t, err := t.Parse(tmpl) </code></code></pre> <ul><li>首先我们创建一个模板给他一名称为 <code>tut</code>模板,会返回一个<code>*Template</code>类型</li> <li>Parse 方法将文本解析为模板</li> </ul><pre><code class="lang-go hljs">func (t *Template) ParseFiles(filenames ...string) (*Template, error) </code></code></pre>

Execute 方法结构 tut 传入解析过模板,然后处理完的输出到输出编辑器 os.Stdout 进行输出。

<pre><code class="lang-go hljs">if err:=t.Execute(os.Stdout,tut); err != nil{ log.Fatal("Execute:",err) return } </code></code></pre> <pre><code class="lang-go hljs">import( "os" "log" "text/template" ) type Tut struct{ Title string Author string } const tmpl = `Tut - Title: {{.Title}}, Author: {{.Author}}` func main() { tut := Tut{ "angular basic tut", "zidea", } t := template.New("tut") t, err := t.Parse(tmpl) if err != nil { log.Fatal("Parse:", err) return } if err:=t.Execute(os.Stdout,tut); err != nil{ log.Fatal("Execute:",err) return } } </code></code></pre> <pre><code class="lang-go hljs">Tut - Title: angular basic tut, Author: zideajangwoodeMacBook-Air:tmpla jangwoo$ </code></code></pre> <ol><li>定义包换结构数据占位符的模板文本</li> <li>通过调用```template.New 函数来创建 (*Template)</li> <li>通过调用 Parse 方法解析字符串解析为模板</li> <li>Execute 将数据对象传入解析好的模板中渲染出输出形式</li> </ol><pre><code class="lang-go hljs">package main import( "os" "log" "text/template" ) type Tut struct{ Title string Author string } const tmpl = `Tut list {{range .}} Title: {{.Title}}, Author: {{.Author}} {{end}} ` func main() { tuts := []Tut{ {"angular basic tut","zidea"}, {"vue basic tut","zidea"}, } t := template.New("tut") t, err := t.Parse(tmpl) if err != nil { log.Fatal("Parse:", err) return } if err:=t.Execute(os.Stdout,tuts); err != nil{ log.Fatal("Execute:",err) return } } </code></code></pre>

这里没有什么新意,<code>{{range .}}</code>接受一个循环体

<pre><code class="lang-go hljs">const tmpl = `Tut list {{range .}} Title: {{.Title}}, Author: {{.Author}} {{end}} ` </code></code></pre>

可以通过<code>define</code> 定义一个变量,然后在<code>ExecuteTemplate</code>通过指定替换<code>T</code>变量的值,可以将模板中定义<code>T</code>变量替换为我们提供的值。T 变量作用域开始 define 终止于 end,我们给 T 赋值将替换 <code>{{.}}</code>。

<pre><code class="lang-go hljs">import( "log" "os" "text/template" ) func main() { t,err := template.New("test").Parse(`{{define "T"}}Hello, {{.}} {{end}}`) err = t.ExecuteTemplate(os.Stdout,"T","World") if err != nil{ log.Fatal("Execute",err) } } </code></code></pre> <pre><code class="lang-go hljs">Hello, World </code></code></pre>

我们可以在模板中声明变量,变量名以tut := "angular basic tut"}} {{$tut}} ```。

<pre><code class="lang-go hljs">t,err := template.New("test").Parse(`{{define "T"}}{{$tut := "angular basic tut"}} {{$tut}} Hello, {{.}} {{end}}`) err = t.ExecuteTemplate(os.Stdout,"T","World") if err != nil{ log.Fatal("Execute",err) } </code></code></pre>
th-5.jpeg
<blockquote>

参考了 Web Development with Go 一书

</blockquote>

到此这篇关于“golang 网络编程(3)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang基础教程
GO语言学习流程
php和golang怎么配合
网络无法连接怎么办?电脑无法连接网络解决方法
Go网络编程 Conn接口
网络编程是做什么的?
golang 接口_Golang介绍
电脑不能连接到无线网络 电脑无法连接到wlan网络解决方法
golang和python有什么区别?
正在执行的goruntine发生阻塞,golang调度策略

[关闭]
~ ~