golang为什么不推荐使用相对路径来import

go可以使用相对路径,import "../somepkg"这种语法可以通过编译。

但是请考虑一种情境,假设现在工程目录下四级有一个go文件需要引入工程目录下一级的包,如果使用相对路径,这样写:

import "../../../pkg"

用$GOPATH,则这样写:

import "project/pkg"

你觉得哪种可读性更强?

另外,不同路径的源文件,如果引用工程中同一个package,用$GOPATH,都是一样的:

import "project/pkg"

用相对路径则可能不同:

import "../pkg" (pkg下一级源文件)

import "../../pkg" (pkg下两级源文件)

Golang-go mod 导入本地包

mian.go调用名为"pk"的包

所有文件都在项目目录"projectfile"下,其中本地包"pk"的文件在"package"目录下。

使用go mod进行依赖包的管理,因此注意项目根目录下是否有go.mod,没有的一定要先go mod init 项目名称。

import引用时,go.mod把所在目录作为根目录,填写路径时把相对路径写在s5后面。

golang如何创建目录

golang中关于目录与文件名等操作都在os这个包中,具体的创建目录都是通过Mkdir和MkdirAll这2个函数来实现的,这两个函数用法一致

os.Mkdir(dirName string, perm FileMode)

dirName即要创建的目录(文件夹路径),可以是绝对路径,也可以是相对路径(相对于GOPATH)

perm表示创建的目录的权限,如0777(读r权限值为4,写权限w值为2,执行权限x值为1)

如:我要在/data/program/goapp这个目录下创建一个golang这个子目录,示例如下:

package main

import (

   "os"

   "fmt"

)

func main() {

   err := os.Mkdir("/data/program/goapp/golang", 0666)

   if err != nil {

      fmt.Println(err)

   }

}

注:Mkdir和MkdirAll的区别

Mkdir创建目录,它的父级目录必须是存在的,不然创建会失败

MkdirAll可以递归创建目录,即只要根目录存在即可,如下:

err := os.MkdirAll("/data/program/goapp/golang/test/hello", 0766)

if err != nil {

   fmt.Println(err)

}

本例中:/data/program/goapp是已经存在的目录,而子目录golang/test/hello是不存在,此时要使用MkdirAll来创建

go模板文件引入js路径问题

Go语言模板文件可以引入js文件或css文件,但是在引入的过程中,需要注意以下几点:

1. 引入的文件路径应该是相对路径,而不是绝对路径。

2. 在引入js文件时,需要使用{{ url }} 模板函数,用来拼接路径, 这样可以更好的兼容不同的路径。

3. 如果是在统一的文件夹中的js文件,最好使用{{ static }}模板函数,这样可以更好的节省路径长度。

4. 在引用js文件时,需要在页面底部,可以使用{{ template }}模板函数,这样可以保证js文件在页面加载完成之前就被加载。

总之,使用Go语言模板文件引入js文件,需要注意路径的相对性,并且使用模板函数来拼接路径,这样可以更好的兼容不同的路径,从而保证引用js文件的正确性。