go语言关于package的一些坑

go语言入门时遇到的一些关于package的坑

  1. 一般的包名是包含一些.go文件的目录名(注意main包的目录不是main目录,如果想在main包中添加函数建议写在main函数所在的.go文件中),如下图所示:编译器会将同一目录下的不同.go文件视作同一个包

    如下为hello包,导入代码为import "hello"
    在这里插入图片描述
    go 里面一个目录为一个package, 一个package级别的func, type, 变量, 常量, 这个package下的所有文件里的代码都可以随意访问, 不需要首字母大写

  2. 如果hello目录下的两个文件如hello.gohello2.go中的package 定义的名字要是同一个,不同的话,是会报错的。举例如下:

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("Hello")
    }
    
    

    上为hello.go,下为hello2.go

    package main2
    
    import "fmt"
    
    func main() {
        fmt.Println("hello2")
    }
    

    报错为package main: found packages main (hello.go) and main2 (hello2.go) in D:\goworks\src\hello

  3. package的声明

    package pakName 此行必须写在第一行,且一个文件夹下的所有文件必须使用同一个包名,一个.go文件不能声明两个package

参考博客
Go语言package踩坑
go同一个目录下的go文件里面不能有多个package


版权声明:本文为try17875864815原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。