Go 语言 - 项目结构 - Go语言中文社区

Go 语言 - 项目结构


文件目录结构

  一般情况下,项目目录结构都是没有规定的,但 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会报以下错误。

无法找到mian()方法

  所以建议大家初学的时候不要制造过于复杂的文件夹与包的关系,应在main包中直接存放携带main()方法的 .go文件。

main包中直接存放携带main()方法的 .go文件

  不建议直接将 .go文件放在src文件下, 建议根据包名创建子文件夹,并放在子文件夹下。在GoLand中新建文件夹后,在该层目录下新建的.go文件,其package默认为当前文件夹名(大小写一致),因此会出现 package src

package src

(此后默认src下的每个文件夹都是package不再作说明)




以上内容均源于网络,并加上自己的实践和理解,如有错误的地方,请在评论区指正。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/084c71837d10
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 14:20:43
  • 阅读 ( 1363 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢