最近想学习一门新的语言,相中了GoLang,说得夸张一点,因为其具有C/C++的运行效率、Java的包管理机制、Python的编码规范以及JavaScript的简洁语法,和我的设计哲学如出一辙。
作为一名软件工程专业的学生,学习一门新的编程语言时,我习惯从它的规范入手,所以我们先了解如何搭建程序项目的基本框架(比如源代码存放位置、自定义模块的存放位置、配置文件等),显然这是个明智的决定,因为GoLang的项目结构根本就是个坑,对新手极其不友好。
文件目录结构
一般情况下,项目目录结构都是没有规定的,但go语言做了规定,这样可以保持一致性。
GoLang的项目目录一般包含以下几个:
- --src 放置项目的源代码文件
- --pkg 放置编译后生成的包 / 库文件
- --bin 放置编译后生成的可执行文件
go程序源文件放置于项目文件夹的src文件夹下, 如: ./project01/src/
一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可,路径中最好不要带有中文,否则可能会编译出错。
程序目录结构
package是GoLang的管理代码的重要机制,其作用参考Java的package、C/C++的头文件。源文件中第一段有效代码必须是 package [包名]
,如:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
同一个文件夹下的文件只能有一个包名,否则编译报错。必须要有mian包,有main包才能生产exe文件。一个mian包里只能有一个main()方法,否则编译报错。main()方法是程序入口,程序运行时执行的代码就是这个方法里的代码。调用包的时候,如果包里还有main包,就会默认调用main包里的内容,当main包就是一个exe程序,不是包。这样调用就会提示:
" import "CloudStorage/sign" is a program, not an importable package "
不建议直接将 .go文件放在src文件下, 建议根据包名创建子文件夹,并放在子文件夹下。在GoLand中新建文件夹后,在该层目录下新建的.go文件,其package默认为当前文件夹名(大小写一致),因此会出现 package src
。package下可以嵌套package,main()方法可以在任何main包的子包下面。
- 文件名与包名没有直接关系,并非需要一致,但不建议文件名与包名一致。
-
文件夹名与包名没有直接关系,并非需要一致,但建议文件夹名与包名一致。
(此后默认src下的每个文件夹都是package不再作说明)*
下一篇 [GoLang ---- 基础语法]https://www.jianshu.com/p/b57ffb622c9f
有疑问加站长微信联系(非本文作者)