Go 语言问题记录——路径问题,包的引入 | 青训营

70 阅读1分钟

1. 同一个包,在同一个目录下面的两个不同文件

如果是同一个包中,在同一个目录下面的两个不同文件,需要调用的函数、变量名称首字母大写,可以直接通过名称调用

2.不同的包中,通过路径来,相对路径从工作区的路径开始

e.g.

gopackagetest/
├── listfunction/
│   └── listfunction.go
└── 61question/
    └── 61A.go

61A.go中部分内容:

package main
import( ls "gopackagetest/listfunction")

调用方法:

head *ln.ListNode

listfunction.go中部分内容:

package listnode

说明:

61A.go属于main包,listfunction.go属于listfunction包,在61A.go引入

import lf "gopackagetest/listfunction"

61A.go属于main包,listfunction.go也属于main包,在61A.go引入

import lf "gopackagetest/listfunction"  

会报错"import "gopackagetest/listfunction" is a program, not an importable package"

同一个包下的文件,就放同一个文件夹下面

同一个包下的文件,就放同一个文件夹下面。不用import,也不用大写函数名,可以直接调用。但是vscode点击运行是直接运行一个文件,不是一个项目。 ---> 可以使用go run . 命令解决。

3.go文件夹下面多个main函数

gopackagetest/
├── 60question/
     └──secondFolder/
          └── 60A.go
└── 61question/
    └──secondFolder/
          └── 61A.go

在多建立一级目录即可

60A.go中部分内容:

package main
func main(){}

61A.go中部分内容:

package main
func main(){}

如果想在61A.go中调用60A.go中 函数或者变量,首先函数名或者变量首字母要大写,然后在61A.go中import( A60 "gopackagetest/60question/secondFolder")

注意:

  1. 这里没把引入重命名为60A 是因为,不能用数字开头命名
  2. 引入的时候是写引入路径,不要写包名,这里包名都是main

多一级目录之后main函数就不冲突了,在同一个项目中想有多个main函数,也这样操作,示例:

image.png