
Go面试题
每天一道golang面试题
AI工具集
这个作者很懒,什么都没留下…
展开
-
map取一个key,然后修改这个值,原map数据的值会不会变化
map属于引用类型,所以取一个key,然后修改这个值,原map数据的值会发生变化。原创 2023-05-17 09:22:43 · 640 阅读 · 0 评论 -
向为nil的channel发送数据会怎么样
空通道即无缓冲通道。无缓冲通道上的发送操作将会阻塞,直到另一个goroutine在对应的通道上执行接收操作,这时值传送完成,两个goroutine都可以继续执行。相反,如果接收操作先执行,接收方gorountine将阻塞,直到另一个goroutine在同一个通道上发送一个值。使用无缓冲通道进行的通信导致发送和接收goroutine同步化。因此,无缓冲通道也称为同步通道。当一个值在无缓冲通道上传递时,接收值后发送方goroutine才被再次唤醒。原创 2023-05-17 09:18:43 · 370 阅读 · 0 评论 -
Go中slice和array区别
array是固定长度的数组,是值类型的,如果进行赋值或者作为函数参数,实际上整个数据都会被重新拷贝一份。使用前必须声明长度而slice属于引用类型,是一个不定长的,总是指向底层的数组array的数据结构。作为函数参数时,slice传递的是指针。创建时不需要指定长度。原创 2023-05-16 09:09:44 · 131 阅读 · 1 评论 -
Go中channel的应用场景
可以将生产者和消费者解耦出来,生产者只需要往channel发送数据,而消费者只管从channel中获取数据。原创 2023-05-15 23:43:06 · 300 阅读 · 1 评论 -
Go的channel和锁的对比
并发问题可以用channel解决也可以用Mutex解决,但是它们的擅长解决的问题有一些不同。channel关注的是并发问题的数据流动,适用于数据在多个协程中流动的场景。而mutex关注的是是数据不动,某段时间只给一个协程访问数据的权限,适用于数据位置固定的场景。原创 2023-05-15 09:37:32 · 333 阅读 · 0 评论 -
Go同一个协程里面,对无缓冲channel同时发送和接收数据有什么问题
同一个协程里,不能对无缓冲channel同时发送和接收数据,如果这么做会直接报错死锁。对于一个无缓冲的channel而言,只有不同的协程之间一方发送数据一方接受数据才不会阻塞。channel无缓冲时,发送阻塞直到数据被接收,接收阻塞直到读到数据。原创 2023-05-15 09:32:44 · 209 阅读 · 0 评论 -
Go数组怎么转集合?
可以使用数组的索引作为map的key,数组的值作为map的值m[i] = v。原创 2023-05-14 16:05:56 · 226 阅读 · 0 评论 -
Go语言中是如何实现继承的?
/ 这里Student继承了People,具有People的属性PeopleGrade int。原创 2023-05-14 15:19:40 · 700 阅读 · 0 评论 -
go中对已经关闭的channel进行读写操作会发生什么?
对于一个已初始化,但并未关闭的通道来说,收发操作一定不会引发 panic。但是通道一旦关闭,再对它进行发送操作,就会引发 panic。如果我们试图关闭一个已经关闭了的通道,也会引发 panic。原创 2023-05-14 15:09:24 · 1107 阅读 · 0 评论