用一个只有main
函数的go文件来简单说一下Go语言的源文件结构布局,主要分为包名、引入的包和具体函数。下边是main.go
示例代码:
package mainimport "fmt"func main() {
fmt.Println("hello, world")
}
package main
就是表明这个文件所在的包是main
,import "fmt"
表明从从fmt
这个包路径引入文件到当前文件里边,而func main(){}
就是在当前文件定义了一个main
函数,真正执行功能的地方。fmt.Println("hello, world")
中的fmt
是包名,与上边import "fmt"
中fmt
包路径是不一样的。先使用go build main.go
编译一下,./main
执行之后输出了hello, world
。
可以看到语句之后没有;
,而且文件也没有格式缩进,不过在go
中有专门对源文件进行格式化的工具gofmt
,比如你可以go fmt main.go
格式化源文件。
gofmt main.go
只能把格式化的内容显示出来,不会在源文件上更改,可以试一下。
在一个函数引用其他包里边的函数时,需要先使用包路径引入包,之后使用包名加函数使用。比如下方的代码:
package mainimport "github.com/sirupsen/logrus"func main() {
logrus.SetLevel(logrus.TraceLevel)
logrus.SetFormatter(&logrus.TextFormatter{FullTimestamp: true,TimestampFormat: "2022-07-17 00:00:00.000",
})
logrus.Trace("你好,整个世界")
}
可以看到import "github.com/sirupsen/logrus"
就是使用包路径引入包,logrus.Println()
就是包名加函数。
go fmt importTest.go
先格式化一下源文件。
使用go build importTest.go
编译的时候报错如下:
importTest.go:3:8: no required module provides package github.com/sirupsen/logrus: go.mod file not found in current directory or any parent directory; see 'go help modules'
这里就需要使用Go module
的功能了。
mkdir importTest
创建一个目录,然后mv importTest.go importTest/main.go
把上边importTest.go
复制到importTest
目录里边,并且更名为main.go
。
go mod init importTest
就会在当前目录里边生成了go.mod
,ls -l
看一下当前目录内容。
cat go.mod
看一下具体内容。
go build importTest
进行构建,发现报错:
main.go:3:8: no required module provides package github.com/sirupsen/logrus; to add it:go get github.com/sirupsen/logrus
go mod tidy
让Go工具自动添加依赖包。
ls -l
可以看一下当前目录里边的内容,发现多了一个go.sum
文件,cat go.mod
可以看到内容。
cat go.sum
看一下go.sum
的内容。
go build importTest
构建,./importTest
执行输出为TRAC[242424+08-117 00:00:00.825] 你好,整个世界
。
此文章为11月Day 24学习笔记,内容来源于极客时间《Tony Bai · Go 语言第一课》。