A.包的概念
1.和Python一样把相同功能的代码放到同一个目录,称为包。
2.包可以被其他包引用。
3.main包主要用来生成可执行文件,每个程序只有一个main包。
4.包的主要作用是提高代码的可复用性。
B.Go基本命令介绍
A.基本命令
1.go run快速执行go文件,就像执行脚本一样
2.go build编译程序生成二进制文件
3.go install(go get)安装可执行文件到bin目录
B. 其他命令
1.go test 执行单元测试或者压力测试
1.go env 显示当前go相关的环境变量(查询go当前版本)
3.go fmt格式化源代码
C.Go程序结构
1.go源码anpackage进行组织,并且package要放到非注释的第一行
2.一个程序只有一个main包和main函数
3.main函数是程序的执行入口
D.注释
1.//单行注释
2./* ..*/多行注释(goland快捷键 ctrl+shift+/)
C.Golang语言特性
A.垃圾回收
1.内存自动回收,再也不需要开发人员管理内存
2.开发人员专注业务实现,降低心智负担
3.只需new分配内存,不需要释放
B.天然并发
1.从语言层面支持并发,肥肠简单,只需要go一下
2.goroutine,轻量级线程(也叫协程或者go程),创建成千上万个也是简简单单,因为一个go程可能只需要2-4kb。
例如:
func goro() {
//代码块
}
func main() {
go goro()
}
C.channel
1.管道,类似unix/linux中的pipe
2.多个goroutine之间通过channe进行通信
3.支持任何类型
//举例代码
func main() {
ch := make(chan string, 20)//make一个chan 值为字符串,容量为20
ch <- "hello" //hello赋值给ch
ch <- "world" //world赋值给ch
ch <- "!" //!赋值给ch
s1 := <-ch //读取第一个ch
s2 := <-ch //读取第二个ch
fmt.Println( s1, s2)
}
//输出
结果为 hello world 因为!并没有进行读取所以没有打印
D.多返回值
1.一个函数返回多个返回值
func a(c int)(n int,err error) //第一个括号里a叫函数名 ,c是形参 需传入int类型数据;第二个括号内是返回值(n int)是第一个返回值,n是对int起名也可以忽略(err error)error是一个错误类型。
E.编译型语言
1.性能只比c略差
2.开发效率和Python,PHP媲美