关于go语言的介绍-《Go In Action》-Ch1

关于go语言的介绍-《Go In Action》-Ch1

1.1 Go 解决现代编程的难题

1.1.1 开发速度

更加智能的编译器,简化依赖算法,编译速度更快,只会关注直接被引用的库
编译器提供类型检查

1.1.2 并发

提供并发支持,goroutine比线程更轻量级的并发,内置channel,在不同goroutine之间通信

1.goroutine

goroutine是可以和其他goroutine并行执行的函数,使用的内存更少。运行时会自动的配置一组逻辑处理器执行goroutine,每个逻辑处理器绑定到一个操作系统线程上,程序实行效率更高

1
2
3
4
func log(msg string) {
....
}
go log("blablabla")

2.channel

channel是可以让goroutine之间进行安全通信的工具,避免共享内存访问的问题,保证同一时刻只会有一个goroutine修改数据, 但是channel并不提供跨goroutine的数据访问保护机制,
如果传输的是副本,那么每个goroutine都持有一个副本,各自对副本修改是安全的。但是如果传输的诗指针时,还是需要额外的同步动作

1.1.3 Go语言的类型系统

无继承,使用组合设计模式,具有接口机制对行为进行建模

1. 类型简单

内置简单类型,支持自定义类型,使用组合来支持扩展

2.Go接口对一组行为建模

一个类型实现了一个接口的所有方法,那么这个类型的实例就可以存储在这个接口类型的实例中,不需要额外声明
Go语言的整个网络库都是用了io.Reader接口,这样可以将程序的功能和不同的网络实现分离,任何实现了open方法的类型,都实现了io.Reader接口

1
2
3
4
//io.Reader
type Reader interface{
Read(p []byte) (n int, err error)
}

1.1.3 内存管理

Golang提供GC

1.2 Hello Go

1
2
3
4
5
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}

Go Playground是提供在线编辑运行Go的网站

# Golang

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×