Go Mod模式下引入当前的项目模块

2020-04-15  本文已影响0人  霡霂976447044

只讨论go mod模式情况。

cd /tmp;mkdir testgomod;cd testgomod
go mod init testxxx

创建一些文件... 最后目录如下

.
├── go.mod
├── main.go
└── packagea
    └── hello.go

1 directory, 3 files

go.mod

module testxxx

go 1.14

hello.go

package hhh

var Name string = "张三"

main.go

package main

import "fmt"
import "testxxx/packagea"  // 正确
// import "packagea" package packagea is not in GOROOT (/usr/lib/go/src/packagea)

func main() {
    fmt.Println("hello world!")
    fmt.Println(hhh.Name)
}

我们得到信息:

  1. package名不一定和目录一致,不一致的时候,写实际的package名
  2. mod模式,导入相对模块,需要加上当前module名的前缀为开始。

其它注意点:

  1. go run xxx.go: 如果xxx.go文件包名是main,那么你引入相同包名的其它文件(xxx2.go)的变量,那么会无法找到该变量。使用go run .或者go run xxx.go xxx2.go。如果你的代码引入了是不同包名的,那么go run xxx.go还是正常的。

  2. 不允许子包导入main包

上一篇下一篇

猜你喜欢

热点阅读