2016-12-11 3 views
2

Я написал эту Go Lang код для обслуживания веб-страницы с шаблоном и значением параметров передаются через программу GoGo веб-страница шаблон служил Blank

// +build 

package main 

import (
    "html/template" 
    "io/ioutil" 
    "net/http" 
) 
type Blog struct { 
    title string 
    heading string 
    para string 
} 
func loadfile(filename string) (string, error) { 
    byte, err := ioutil.ReadFile(filename) 
    return string(byte), err 
} 
func handler(w http.ResponseWriter, r *http.Request) { 
    blog := Blog{title: "GoLang", heading: "WebServer", para: "coding"} 
    t, err := template.ParseFiles("test.html") 
    fmt.Println(err) 
    t.Execute(w, blog) 
} 
func main() { 
    http.HandleFunc("/", handler) 
    http.ListenAndServe(":9000", nil) 
} 

HTML файл шаблон с именем, как test.html следующий

<html> 
<head> 
<title>{{.title}}</title> 
</head> 
<body> 

<h1>{{.heading}}</h1> 
<p>{{.para}}</p> 

</body> 
</html> 

Когда я запускаю программу, проблема в том, что обслуживаемая страница выглядит пустой. Параметры, которые должны были быть переданы в шаблон, не отображаются на отображаемой странице. Я даже напечатал ошибку, но нет никакой ошибки

ответ

2

Вы должны написать первую букву полого Blog с заглавными буквами, чтобы сделать их общедоступными

type Blog struct { 
    Title string 
    Heading string 
    Para string 
} 

Также вы можете передать карту методе Execute(), что-то вроде этого:

b := map[string]string{ 
    "title": "GoLang", 
    "heading": "WebServer", 
    "para": "coding", 
} 
t.Execute(w, b) 
+1

Спасибо вам большое. Я не знал, что не-капитал делает переменную приватной. Так что просто вопрос об этом - если переменные struct являются частными, мы можем использовать их только в функциях struct? – Tahseen

+0

Если поле является частным, будет видно только в области пакета, в вашем примере оно будет доступно в любом файле внутри ** основного ** пакета, но поскольку 't.Execute()' находится в другом pkg, не будет для доступа к полям. Это способ сделать инкапсуляцию в Go ** private **: нижний регистр, ** public **: верхний регистр –

Смежные вопросы