go目录包管理

注意

  • 每个子目录中只能存在一个包

  • go build 后面接目录,只会编译此目录下的 go 文件,并不会递归处理子目录下的 go 文件

项目目录

Golang项目目录下一般有三个子目录:

  • src存放源代码
  • pkg编译后生成的文件
  • bin编译后生成的可执行文件

目录结构:

 <proj>
   |--<src>
       |--<a>
           |--<a1>
               |--al.go
           |--<a2>
               |--a2.go
       |--<b>
           |--b1.go
           |--b2.go

       |--<c>
           |--c.go
   |--<pkg>
   |--<bin>
al.go

package a1 
import "fmt"
func PrintA1(){
	fmt.Println("a/a1")
}
-------------------------------------
a2.go

package a2
import "fmt"
func PrintA2(){
	fmt.Println("a/a2")
}
-------------------------------------
b1.go

package b
import "fmt"
func PrintB1(){
	fmt.Println("b.b1")
}
-------------------------------------
b2.go

package b
import "fmt"
func PrintB(){
	printB1()
	fmt.Println("b.b2")
}
-------------------------------------
c.go

package main
import(
   "a/a1"
   "a/a2"
   "b"
)
func main(){
   a1.PrintA1()
   a2.PrintA2()
   b.PrintB()
}

将proj加入$GOPATH

执行:

go build a/a1
go install a/a1
go build a/a2
go install a/a2
go build b
go install b

go build c
go install c

可以看到pkg文件夹下生成了,a文件夹、b.a,a文件夹下有a1.a、a2.a

bin文件夹下有c.exe(当然,在执行go build c的位置也存在c.exe)

package中的名称最好与目录名一样,这样在import的时候直接import目录名就好了。如果两者不一致,例如上面的b1.go、b2.go里面的package是package bbbbb,则在c.go里import的时候要import "b",然后下面的b.PrintB(),则需要改为bbbbb.PrintB()

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×