go json返回和模板基础

2017/11/23
go基础练习
go很简洁,像php一样好学
又有很强大的协程
值得好好学习下

go 转json很简单,不过数据结构需要自己拼装了
这个比起php的万能数组就复杂了一些
如此看来php真是最好的语言 数组就是一切

正文

package main

import (
	"encoding/json"
	"fmt"
	"time"
)

const IssuesURl = "https://api.github.com/search/issues"

type IssuesSearchResult struct {
	TotalCount int `json:"total_count"`
	Ttems      []Issue
}

type Issue struct {
	Number    int
	HTMLURL   string `json:"html_url"`
	Title     string
	State     string
	User      User
	CreatedAt time.Time `json:"create_at"`
	Body      string
}

type User struct {
	Login   string
	HTMLURL string `json:"html_url"`
}

func main() {
	result := IssuesSearchResult{TotalCount: 100}
	result.Ttems = []Issue{Issue{Number: 1000, HTMLURL: "www.baidu.com", Title: "ok", Body: "ok", User: User{Login: "login"}}}
	jsonstr, err := json.Marshal(result)
	fmt.Println(string(jsonstr), err)

	issue := IssuesSearchResult{}
	err = json.Unmarshal(jsonstr, &issue)
	fmt.Printf("%+v", issue.Ttems)
	for _, v := range issue.Ttems {
		fmt.Println(v)
	}
	
	
	//模板
	
	var htmlinfo struct {
		Name string
	}
	htmlinfo.Name = "nihao"
	tmpl := template.New("html1")
	tmpl.Parse("Hello  Welcome to go programming...\n")
	tmpl.Execute(os.Stdout, htmlinfo)
	
	//或者你也可以直接这样 demo.txt内容 Hello  Welcome to go programming...\n
	var htmlinfo struct {
		Name string
	}
	htmlinfo.Name = "nihao"
	tmpl, err := template.ParseFiles("./demo.txt")
	tmpl.Execute(os.Stdout, htmlinfo)

}


模板函数

创建一个名字为name的模板
func New(name string) *Template

解析模板字符串
func (t *Template) Parse(text string) (*Template, error)

解析文件
func (t *Template) ParseFiles(filenames ...string) (*Template, error)

执行模板,将结果写入wr
func (t *Template) Execute(wr io.Writer, data interface{}) error

对象解析


来包含需要在渲染时被替换的字段,表示当前的对象
如果要访问当前对象的字段通过,但是需要注意一点:这个字段必须是导出的(字段首字母必须是大写的),否则在渲染的时候就会报错
import (
    "html/template"
    "log"
    "os"
)

type User struct {
    Name string
    Age int
}

func main(){
    tmpl,err := template.New("Demo").Parse("My name is \n I am  year old")
    if err!=nil {
        log.Fatal("Parse error",err);
    }
    err = tmpl.Execute(os.Stdout,User{
        Name :"bx",
        Age :23,
    })
    if err!=nil {
        log.Fatal("execute error",err);
    }
}

###


import (
    "html/template"
    "os"
)

func main(){
    slice := []string{"test1","test2"}
    tmpl,_:= template.New("slice").Parse("\n")
    tmpl.Execute(os.Stdout,slice)
}

管道


func main(){
    const temStr = ``
    t := template.Must(template.New("demo").Parse(temStr))
    t.Execute(os.Stdout, "hello world")
}

函数调用


import (
    "html/template"
    "os"
)
func foo(str string)(result string){

    return "hello "+str
}
func main(){
    t, _:= template.New("demo").Funcs(template.FuncMap{"foo":foo}).Parse("")
    t.Execute(os.Stdout,"test")
}

个人随笔

安静的等待,你若盛开,蝴蝶自来

承接高质量 网站开发 app开发 如有需要请点击About联系

@承鹏辉