使用os.Getwd()获取文件路径以及**filepath.Join()**解决相对路径访问问题
使用gin来渲染模板时,一直找不到指定路径下的模板文件,使用绝对路径可以输出,但是相对路径就会出现问题。后来发现应该是go mod运行时的路径不是原本所在的路径,如果单纯使用相对路径也就相当于刻舟求剑。
解决办法:
首先我的文件路径如下:
在这里插入图片描述
templates.go是我要运行的程序,

package main

import (
	"fmt"
	"html/template"
	"net/http"
	"os"
	"path/filepath"
)

type User struct {
	Name string
	gender string
	Age int
}

func teplatetest(w http.ResponseWriter, r *http.Request){
	//解析模板

	//使用绝对路径
	//template, err := template.ParseFiles("E:\\Go\\workspace\\study\\go-study\\templates\\hello.tmpl")
	//获取当前文件路径
	cur, _ := os.Getwd()
	filename := filepath.Join(cur, "templates/hello.tmpl")
	template, err := template.ParseFiles(filename)

	if err != nil{
		fmt.Println("Parse template failed,err:",err)
		return
	}

	//渲染模板
	name := "静静"
	//user1 := User{
	//	Name: "张三",
	//	gender: "男",
	//	Age: 18,
	//}
	err = template.Execute(w, name)
	//err = template.Execute(w, user1)
	if err != nil{
		fmt.Println("render template failed,err:",err)
		return
	}
}

func main() {
	http.HandleFunc("/", teplatetest)
	err := http.ListenAndServe(":9090", nil)
	if err != nil{
		fmt.Println("HTTP serve start failed,err:",err)
		return
	}
}