gpt4 book ai didi

go - Go语言如何指定 `template.ParseFiles`的文件位置?

转载 作者:IT王子 更新时间:2023-10-29 00:58:48 26 4
gpt4 key购买 nike

看完this video ,我自己试试。但是,我收到 panic 错误 panic: open templates/index.html: The system cannot find the path specified. Complete erroe message is like the following.

Hello, Go Web Development 1.3
panic: open templates/index.html: The system cannot find the path specified.

goroutine 1 [running]:
panic(0x789260, 0xc082054e40)
F:/Go/src/runtime/panic.go:481 +0x3f4
html/template.Must(0x0, 0xe34538, 0xc082054e40, 0x0)
F:/Go/src/html/template/template.go:340 +0x52
main.main()
E:/Users/User/Desktop/codespace/go_workspace/src/go-for-web-dev/src/1.3_UsingTemplate.go:11 +0x20d

我尝试了不同的字符串,例如 "templates/index.html""index.html""./template/index.html"...此外,我尝试将整个模板文件夹复制到 pkgbin...但我收到相同的错误消息。

下面是go程序(1.3_UsingTemplate.go)。

package src

import (
"fmt"
"net/http"
"html/template"
)

func main() {
fmt.Println("Hello, Go Web Development 1.3")
templates := template.Must(template.ParseFiles("templates/index.html")) //This line should have some problem

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if err := templates.ExecuteTemplate(w, "index.html", nil); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
})

fmt.Println(http.ListenAndServe(":8080",nil))
}

文件结构

enter image description here


更新

要解决这个问题,我需要先将当前工作目录更改为包含*.go文件的文件夹。然后,执行 go run {filename.go}。在 GoClipse 中,是否有任何设置可以设置为 Run Configurations 以自动将当前工作目录更改为包含 *.go 文件的文件夹?

最佳答案

os.Getwd() 可用于返回项目的根工作目录,然后与模板文件的内部路径连接:

// Working Directory
wd, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
// Template
tpl, err := template.ParseFiles(wd + "/templates/index.html")

关于go - Go语言如何指定 `template.ParseFiles`的文件位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com