社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
一般情况下,项目目录结构都是没有规定的,但 GoLang 做了规定,这样可以保持一致性。
GoLang的项目目录一般包含以下几个:
- --src 放置项目的源代码文件
- --pkg 放置编译后生成的包 / 库文件
- --bin 放置编译后生成的可执行文件
go程序源文件放置于项目文件夹的src文件夹下, 如: ./project01/src/
一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可,路径中最好不要带有中文,否则可能会编译出错。
package是GoLang的管理代码的重要机制,其作用参考Java的package、C/C++的头文件。源文件中第一段有效代码必须是
package [包名]
,如:package hello
,
同一个文件夹下的文件只能有一个包名,否则编译报错。必须要有mian包,有main包才能生产exe文件。一个mian包里只能有一个main()方法,否则编译报错。main()方法是程序入口,程序运行时执行的代码就是这个方法里的代码。
(调用包的时候,如果包里还有main包,就会默认调用main包里的内容,当main包就是一个exe程序,不是包。这样调用就会提示: " import "CloudStorage/sign" is a program, not an importable package " 这一段看不懂的话先跳过)
GoLand的包管理工具的作用和Java的差不多,但是机制却有所差别。
- 文件名与包名没有直接关系,并非需要一致,但不建议文件名与包名一致。
- 文件夹名与包名没有直接关系,并非需要一致,但建议文件夹名与包名一致。
两个文件夹下的 .go文件可以是同一个package,无论两个文件夹并列或嵌套,只要包名正确,package将不受目录结构影响。 如:
但是包名不能嵌套,例如main()方法的包名不是main的话,GoLand会在main()方法处打上标记:
右键运行的时候,GoLand会报以下错误。
所以建议大家初学的时候不要制造过于复杂的文件夹与包的关系,应在main包中直接存放携带main()方法的 .go文件。
不建议直接将 .go文件放在src文件下, 建议根据包名创建子文件夹,并放在子文件夹下。在GoLand中新建文件夹后,在该层目录下新建的.go文件,其package默认为当前文件夹名(大小写一致),因此会出现 package src
。
(此后默认src下的每个文件夹都是package不再作说明)
以上内容均源于网络,并加上自己的实践和理解,如有错误的地方,请在评论区指正。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!