go-2
1.对Go的理解
它是一种编译型,并发型,拥有GC的编程。它不是面向对象语言,不具备封装,继承和多态,但是可以实现,通过interfance{}接口来实现多态性。
没有做异常处理,不能像java一样try...catch...,但是可以通过panic,defer和recover来处理。
其他语言的函数一般只返回一个返回值,go可以返回多个。
go文件经过编译之后,不会和java一样生成字节码文件,通过 go build生成一个二进制的可执行文件。
go的并发:采用协程来实现并发编程,不同的协程(goroutine)之间继续消息传递和同步的方法,可以安全地进行数据通信;go提供三种channel:只收不发,只发不收,双向通道。当多个协程同时访问共享资源时,容易出现竞争状态和死锁的情况,Go提供了Mutex锁。
2.Go中的锁
Mutex:互斥锁,不可重入。当一个协程获取mutex,其他的协程只能等待这个协程释放锁。数据更安全但性能会降低。
加锁:Lock(), 解锁:ULock()
RWMutex:读写锁,单写多读模型。在锁占用的时候,只能读,不能写。
加锁:Lock(), 解锁:ULock()
3.int8与int16...的区别
go语言中的int大小与操作系统位数相关,32位操作系统,int类型是4字节,64位操作系统大小位8字节
int8-1字节 int16-2字节 int32-4字节 int64-8字节
uint是无符号整型
4.go的数据类型
基本类型:boolen,数字类型,字符串
派生:结构体(java的实体类),数组/切片,指针,通道(可以管理协程),map,接口(interface)
5.反射
Go中反射是由reflect包提供支持,定义两个类型Type和Value,可以获取任意对象的value和type。

浙公网安备 33010602011771号