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。

posted @ 2023-07-20 16:53  饮冰而行  阅读(60)  评论(0)    收藏  举报