go面试题
风贰中
这个作者很懒,什么都没留下…
展开
-
实现set
package setimport ( "bytes" "fmt")func main() {}type HashSet struct { m map[interface{}]bool}func NewHashSet() *HashSet { return &HashSet{m: make(map[interface{}]bool)}}//添加 true 添加成功 false 添加失败func (set *HashSet) Add(e interfac.原创 2021-04-20 00:49:34 · 179 阅读 · 0 评论 -
context包的用途
context包的用途Context通常被译作上下文,它是一个比较抽象的概念,其本质,是【上下上下】存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine原创 2021-04-20 00:47:24 · 295 阅读 · 0 评论 -
make和new区别
new1.new的作用是初始化一个指向类型的指针(*T)2.new函数式内建函数,函数定义:func new(Type) *Type3.使用new函数来分配空间,传递给new函数的时一个类型,不是一个值。返回值,指向这个新分配的零值的指针make的作用是为slice,map或chan初始化并返回引用(T)make函数式内建函数,函数定义:func make(Type, size IntegerType) Type第一个参数是一个类型,第二个参数是长度,返回值是一个类型make(T,args原创 2021-04-20 00:46:19 · 384 阅读 · 0 评论 -
select可以用于什么,常用语gorotine的完美退出
golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作原创 2021-04-20 00:44:46 · 291 阅读 · 0 评论 -
go struct能不能比较
因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型原创 2021-04-20 00:43:24 · 278 阅读 · 0 评论 -
说说进程,线程,协程之间的区别
进程是资源的分配的调度的一个独立单元,而线程是cpu调度的基本单元同一个进程可以包括多个线程;进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束;线程共享整个进程的资源(寄存器,堆栈,上下文),一个进程至少包括一个线程;进程的创建调用fork,而线程的创建调用pthread_create;线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源进程是资源的分配单位线程是操作系统调度的单位进程切换需要的资源很大,效率很低线程切换需要的资源一般,效率原创 2021-04-20 00:42:18 · 287 阅读 · 1 评论 -
go语言中的引用类型包含哪些
数组切片,字典,通道,接口原创 2021-04-17 01:23:08 · 557 阅读 · 0 评论 -
在go语言中,Printf(),Sprintf(),Fprintf()函数的区别用法是什么?
都是把格式好的字符串输出,只是输出的目标不一样;Printf(),是把格式字符串输出到标准输出(一般是屏幕,可以重定向)是和标准输出文件(stdout)关联的,Fprintf则没有这个限制Sprintf() 是把格式字符串输出到指定字符串中,所以参数比printf多一个char*,那就是目标字符串地址Fprintf() 是把格式字符串输出到指定文件设备中,所以参数比printf多一个文件指针FILE*主要用于文件操作,Fprintf()是格式化输出到一个stream,通常是到文件...原创 2021-04-17 01:22:22 · 1315 阅读 · 0 评论 -
切片和数组对比
数组数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列数组的长度是数组类型的一部分,所以[3]int和[4]int是两不同的数组类型数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变;数组是值传递;数组是内置(build-in)类型,是一组同类数据的集合,他是值类型,通过从0开始的下标索引访问元素值数组的长度也是其1类型的一部分,通过内置函数len(array)获取其长度在初始化后长度是固定的,无法修改其长度,当做为方法的参数传入将复制一份数组而不是引用同一指针.原创 2021-04-17 01:14:02 · 128 阅读 · 0 评论