go语言template用法实例_Golang

本文实例讲述了go语言template用法。分享给大家供大家参考。具体分析如下:

golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便

复制代码 代码如下:

package main
import (
    "fmt"
    "os"
    "text/template"
)
type Latlng struct {
    Lat float32
    Lng float32
}
func (latlng Latlng) String() string {
    return fmt.Sprintf("%g/%g", latlng.Lat, latlng.Lng)
}
func main() {
    data := []template.FuncMap{}
    data = append(data, template.FuncMap{"name":"dotcoo1", "url":"http://www.jb51.net/", "latlng":Latlng{24.1, 135.1}})
    data = append(data, template.FuncMap{"name":"dotcoo2", "url":"http://www.jb51.net/", "latlng":Latlng{24.2, 135.2}})
    data = append(data, template.FuncMap{"name":"dotcoo2", "url":"http://www.jb51.net/", "latlng":Latlng{24.3, 135.3}})
    datatpl := `{{range .}}{{template "user" .}}{{end}}`
    usertpl := `{{define "user"}}name:{{.name}}, url:{{.url}}, latlng:{{.latlng}} lat:{{.latlng.Lat}} lng:{{.latlng.Lng}}
{{end}}`
    tpl, err := template.New("data").Parse(datatpl)
    if err != nil {
        panic(err)
    }
    _, err = tpl.Parse(usertpl)
    if err != nil {
        panic(err)
    }
    err = tpl.Execute(os.Stdout, data)
    if err != nil {
        panic(err)
    }
    println()
}

希望本文所述对大家的Go语言程序设计有所帮助。

时间: 2024-11-01 04:17:43

go语言template用法实例_Golang的相关文章

Go语言接口用法实例_Golang

本文实例讲述了Go语言接口用法.分享给大家供大家参考.具体分析如下: 接口类型是由一组方法定义的集合. 接口类型的值可以存放实现这些方法的任何值. 复制代码 代码如下: package main import (     "fmt"     "math" ) type Abser interface {     Abs() float64 } func main() {     var a Abser     f := MyFloat(-math.Sqrt2)   

go语言base64用法实例_Golang

本文实例讲述了go语言base64用法.分享给大家供大家参考.具体如下: 这里展示golang base64 的一个小例子,代码如下: 复制代码 代码如下: package main import (     "fmt"     "encoding/base64" )             func main() {     b64 := base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl

Go语言MessageBox用法实例_Golang

本文实例讲述了Go语言MessageBox用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: package main import (        "syscall"        "unsafe"        "fmt" ) func abort(funcname string, err int) {        panic(funcname + " failed: " + syscall.Errno(er

GO语言Defer用法实例分析_Golang

本文实例讲述了GO语言Defer用法.分享给大家供大家参考.具体分析如下: defer:调用一个被 defer 的函数时在函数刚要返回之前延迟执行,当函数无论怎样返回,某资源必须释放时,可用这种与众不同.但有效的处理方式.传统的例子包括解锁互斥或关闭文件. 这样延迟一个函数有双重优势:一是你永远不会忘记关闭文件,此错误在你事后编辑函数添加一个返回路径时常常发生.二是关闭和打开靠在一起,比放在函数尾要清晰很多. 复制代码 代码如下: /**  * Created with IntelliJ IDE

Go语言map用法实例分析_Golang

本文实例讲述了Go语言map用法.分享给大家供大家参考.具体分析如下: map 映射键到值: map 在使用之前必须用 make 来创建(不是 new):一个值为 nil 的 map 是空的,并且不能赋值. 复制代码 代码如下: package main import "fmt" type Vertex struct {     Lat, Long float64 } var m map[string]Vertex func main() {     m = make(map[stri

go语言接口用法实例分析_Golang

本文实例讲述了go语言接口用法.分享给大家供大家参考.具体分析如下: 首先定义一个接口: 复制代码 代码如下: type I interface{     Get() int     Put(int)   } 这段话就定义了一个接口,它包含两个函数Get和Put 好了,我的一个接口实现了这个接口: 复制代码 代码如下: type S stuct {val int} func (this *S) Get int {     return this.val } func (this *S)Put(v

Go语言的管道Channel用法实例_Golang

本文实例讲述了Go语言的管道Channel用法.分享给大家供大家参考.具体分析如下: channel 是有类型的管道,可以用 channel 操作符 <- 对其发送或者接收值. ch <- v // 将 v 送入 channel ch. v := <-ch // 从 ch 接收,并且赋值给 v. ("箭头"就是数据流的方向.) 和 map 与 slice 一样,channel 使用前必须创建: ch := make(chan int) 默认情况下,在另一端准备好之前,

Go语言轻量级线程Goroutine用法实例_Golang

本文实例讲述了Go语言轻量级线程Goroutine用法.分享给大家供大家参考.具体如下: goroutine 是由 Go 运行时环境管理的轻量级线程. go f(x, y, z) 开启一个新的 goroutine 执行 f(x, y, z) f,x,y 和 z 是当前 goroutine 中定义的,但是在新的 goroutine 中运行 f. goroutine 在相同的地址空间中运行,因此访问共享内存必须进行同步. sync 提供了这种可能,不过在 Go 中并不经常用到,因为有其他的办法.(以

go语言变量定义用法实例_Golang

本文实例讲述了go语言变量定义用法.分享给大家供大家参考.具体如下: var语句定义了一个变量的列表:跟函数的参数列表一样,类型在后面. 复制代码 代码如下: package main import "fmt" var x, y, z int var c, python, java bool func main() {     fmt.Println(x, y, z, c, python, java) } 变量定义可以包含初始值,每个变量对应一个. 如果初始化是使用表达式,则可以省略类