Go语言通过包机制来组织代码,促进模块化和重用性。每个Go源文件必须声明它所在的包,通常在文件顶部使用package关键字。核心概念和使用方法包括:
- 包的导入:使用import关键字导入其他包,可以导入标准库、第三方库或自定义包。支持单独导入和整体导入(如import ("fmt"; "math"))。
- 标准库:Go提供了丰富的标准库,涵盖了常用功能,如字符串处理、网络编程、文件操作等。常用的标准库有fmt,net/http,os等。
- 自定义包:开发者可以创建自己的包,便于维护和重用代码。包文件通常存放在具有相同名称的目录下,文件名通常以.go结尾。
- 包的可见性:包内的标识符(变量、函数、类型等)以大写字母开头则公开(可被其他包访问),以小写字母开头则私有(只能在同一包内访问)。
- 使用和管理依赖:使用go.mod文件来管理包的依赖,支持模块的版本控制,提升项目结构的组织性。
- 文档生成:Go工具可以自动生成文档,使用go doc命令可以查看包的文档,可用于检查函数、方法、类型的详细信息。
总结:Go语言的包机制极大地增强了代码的可读性和可维护性。通过合理组织和管理包,开发者可以更高效地构建和维护Go应用程序。
Go语言的包机制极大地增强了代码的可读性和可维护性。通过合理组织和管理包,开发者可以更高效地构建和维护Go应用程序。
1."src"目录是以代码包的形式组织并保存go源码文件的。每个代码包都和"src"目录下的文件夹一一对应。每个目录都是一个代码包。
2.可以通过路径导入如: import “123/1111”绝对路径 import "./789"相对路径
/*
关于包的使用:
1.一个目录下的统计文件归属一个包。package的声明要一致
2.package声明的包和对应的目录名可以不一致。但习惯上还是写成一致的。
3.包可以嵌套
4.同包下的函数不需要导入包,可以直接使用
5.main包,main()函数所在的包,其他包不能使用
6.导入包的时候,路径要从"src"下开始写
*/
代码中的操作:
点操作:若在包的前面加上.可以在下方使用的时候不用写包名
起别名:在包的前面加上一个别名
_操作:仅仅只是导入包进行初始化操作,并不能使用包里的其他函 数,常量等资源。如 _ "fmt"
在调用另一个包的结构体的时候要注意顺序相同,或者前面表明例如:NAME : YUI;
一个包想用,另一个包中的函数,在import中声明包路径
!!!包里的函数开头要大写才能访问
管理外部包:
github:
管理MySQL的包:localhost:~ ruby$ go get github.com/go-sql-driver/mysql
闭包(closure):是由一个函数和其相关的引用环境组合的一个整体。(闭包=函数+引用环境)
闭包的作用就是在a()执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a()所占用的资源,因为a()的内部函数b()的执行需要依赖a()中的变量i。
例如:
package main
import (
“fmt”
)
func a() func() int {
i : = 0
b : = func() int {
i++
fmt.Println(i)
return i
}
return b
}
func main() {
c : = a()//这儿相当于调用匿名函数,无参的
c()
c()
c()
a() //不会输出i
}
//
1
2
3
!!!闭包复制的是原对象指针,这就很容易解释延迟引用现象。