golang语言面试题总结
1.在go语言中,new和make的区别?
new的作用是初始化一个指向类型的指针(*T)
new函数是内建函数,函数定义:funcnew(Type)*Type
使用new函数来分配空间。传递给new函数的是一个类型,不是一个值。返回值是指向这
个新分配的零值的指针。
make的作用是为slice,map或chan初始化并返回引用(T)。
make函数是内建函数,函数定义:funcmake(Type,sizeIntegerType)Type
∙第一个参数是一个类型,第二个参数是长度
∙返回值是一个类型
make(T, args)函数的目的与new(T)不同。它仅仅用于创建Slice,Map和Channel,并且
返回类型是T(不是T*)的一个初始化的(不是零值)的实例。
2.在go语言中,Printf()、Sprintf()、Fprintf()函数的区别用法是什么?
都是把格式好的字符串输出,只是输出的目标不一样:
Printf(),是把格式字符串输出到标准输出(一般是屏幕,可以重定向)。
Printf()是和标准输出文件(stdout)关联的,Fprintf则没有这个限制.
Sprintf(),是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目
标字符串地址。
Fprintf(),是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针
FILE*。主要用于文件操作。Fprintf()是格式化输出到一个stream,通常是到文件。
3.说说go语言中,数组与切片的区别?
(1).数组
数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。
数组的长度是数组类型的一部分,所以[3]int和[4]int是两种不同的数组类型。
数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变;
数组是值传递;