Go语言结构
知识主要参考菜鸟教程。
简单实例
Go语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 发表达式
- 注释
package mainimport "fmt"func main() {/*这是一行注释*/fmt.Println("hello,world")
}
上述程序各个部分组成:
- package main定义了包名。源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表明一个可独立执行的程序,每个Go应用程序都包含一个名为main的包。
- import "fmt"告诉Go编译器这个程序需要使用fmt包(的函数,或者其他元素),fmt包实现了格式化IO(输入/输出)的函数。
- func main()是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有Init()函数则会先执行该函数)。
- /***/是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
- fmt.Println(…)可以将字符串输出到控制台,并在最后自动增加换行字符\n。使用fmt.Println(“…\n”)会得到相同的结果。Print和Println这两个函数也支持使用变量。如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量arr输出到控制台。
- 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group 1,那么使用这种形式的标识符对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并可用的(像面向对象语言中的protected)。
关于包需要注意以及使用的问题
- 文件名与包名没有直接关系,也就是说不一样要将文件名与包名定成同一个。
- 文件夹名与报名也没有直接关系,也就是说也不需要一致。
- 同一个文件夹下的文件只能有一个包名,否则会编译出错。
测试用例
文件结构:
测试代码:
mul.go
package testimport "fmt"func New() {fmt.Println("test packge print")
}
go.mod
module Twogo 1.19
main.go
package mainimport ("fmt""Two/Calc" //路径信息
)func main() {test.New() //包信息fmt.Println("main")
}
运行结果:
注意,博主使用的go版本为1.19.4,同时使用go env命令需要明确注意以下字段为打开模式。
而go.mod不是自己创建而来,而是通过以下命令生成:
go mod Init Two
go mod tidy
此时在main.go界面运行即可成功编译通过。