golang语言特性
1. 垃圾回收
a. 内存自动回收,再也不需要开发人员管理内存
b. 开发人员专注业务实现,降低了心智负担
c. 只需要new分配内存,不需要释放
2. 天然并发
a . 从语言层面支持并发,非常简单
b. goroute,轻量级线程,创建成千上万个goroute成为可能
c. 基于CSP(Communicating Sequential Process)模型实现
func main() { go fmt.Println(“hello") }
3. channel
a . 管道,类似unix/linux中的pipe
b. 多个goroute之间通过channel进行通信
c. 支持任何类型
func main() { pipe := make(chan int,3) pipe <- 1 pipe <- 2 }
4. 多返回值
a. 一个函数返回多个值
func calc(a int, b int)(int,int) { sum := a + b avg := (a+b)/2 return sum, avg }
第一个golang程序
1. hello world,在目录下新建hello.go
package main import( “fmt” ) func main() { fmt.Println(“hello world”) }
包的概念
1. 和python一样,把相同功能的代码放到一个目录,称之为包
2. 包可以被其他包引用
3. main包是用来生成可执行文件,每个程序只有一个main包
4. 包的主要用途是提高代码的可复用性
包的实战:
1. calc目录
2. 在calc目录下新建calc.go
package calc func Add(a int, b int) int { return a + b }
3. 修改hello.go代码,如下
package main import( “fmt” “calc” ) func main() { sum := calc.Add(3,5) fmt.Println(“hello world,%d”,sum) }