Go并发
Ageint }
// 方法 func (p *Person) SayHello() {
fmt.Println("Hello, my name is", p.Name)
}
- Go语言通过接口来定义对象的行为,而不是通过明确的继承关系。一个类型只要实现了接口定义的方法,就
被视为实现了该接口。
type Speaker interface { Speak()
}
type Person struct { Name string
}
// Person 实现了 Speaker 接口 func (p *Person) Speak() {
fmt.Println("Hello, my name is", p.Name)
}
- Go语言通过结构体的组合特性来实现对象的组合。一个结构体可以包含其他结构体作为其字段,从而实现对
象的复用。
- 尽管Go语言没有像传统面向对象语言那样的私有成员访问修饰符,但通过首字⺟大小写来控制成员的可见
性,实现了封装的效果。首字⺟大写的成员是公有的,可以被外部包访问;首字⺟小写的成员是私有的,只能在定义的包内访问。
Go并发
进程、线程、协程
进程、线程和协程都是并发编程的概念
进程是操作系统分配资源的基本单位,每个进程都有自己的独立内存空间,不同进程之间的数据不能直接共享, 通常通过进程间通信(IPC)来进行数据交换,例如管道、消息队列等。
线程是操作系统调度的最小执行单位,同一进程的不同线程共享相同的内存空间,可以直接访问共享数据。
协程是轻量级的用户态线程,由Go调度器进行管理,协程的创建和销毁比线程更为轻量,可以很容易地创建大量的协程。协程之间通过通信来共享数据,而不是通过共享内存。这通过使用通道(channel)等机制来实现。
全站分卷索引 · 29 卷
- 1代码随想录知识星球精华(最强八股文)第五版(Go篇))
- 2Go string 和 []byte 的区别
- 3数组和切片的区别
- 4扩容前后的Slice是一样的吗
- 5Go语言map是有序的还是无序的, 为什么
- 6go里面的map是并发安全的吗?如何并发安全
- 7Go 的错误处理和 Java 的异常处理对比
- 8介绍一下panic和recover
- 9什么是defer?有什么作用
- 10Go并发
- 11进程、线程的区别
- 12什么是go runtine
- 13Go语言中的Channel是什么, 有哪些用途,如何处理阻塞
- 14什么是互斥锁(mutex)?在什么情况下会用到它们?
- 15Mutex有几种模式
- 16goroutine什么情况会发生内存泄漏?如何避免。
- 17Go语言中GC的流程是什么
- 18Go 中的内存逃逸现象是什么?
- 19CAP 理论,为什么不能同时满足
- 20说一下 Gin 的路由怎么实现的
- 21简述slice的底层原理,和数组的区别是什么
- 22defer底层原理
- 23侵入式和非侵入式的区别
- 24goroutine与线程的区别
- 25goroutine在什么情况下会被挂起呢?
- 26GC(垃圾回收)原理 1.5版本
- 27简述Go的垃圾回收机制
- 28协程优势及其通信方式
- 29Go的内存对齐