欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放Golang岗位内推,Golang企业题库,Golang精品资源等栏目
以下题目资源都来自GolangRoadmap->Go求职->企业题库
题目ID-13 Go 语言当中 new的作用是什么?
new创建一个该类型的实例,并且返回指向该实例的指针。new函数是内建函数,函数定义:
func new(Type) *Type
- 使用new函数来分配空间
- 传递给new函数的是一个类型,而不是一个值
- 返回值是指向这个新分配的地址的指针
题目ID-14 Go 语言当中 make的作用是什么?
make的作用是为slice, map or chan的初始化 然后返回引用 make函数是内建函数,函数定义:
func make(Type, size IntegerType) Type
make(T, args)函数的目的和new(T)不同 仅仅用于创建slice, map, channel 而且返回类型是实例
题目ID-15 Printf(),Sprintf(),FprintF() 都是格式化输出,有什么不同?
虽然这三个函数,都是格式化输出,但是输出的目标不一样
- Printf是标准输出,一般是屏幕,也可以重定向。
- Sprintf()是把格式化字符串输出到指定的字符串中。
- Fprintf()是把格式化字符串输出到文件中。
题目ID-16 Go 语言当中数组和切片的区别是什么?
-
数组固定长度。数组长度是数组类型的一部分,所以[3]int和[4]int是两种不同的数组类型数组需要指定大小,不指定也会根据初始化,自动推算出大小,大小不可改变。数组是通过值传递的。
-
切片可以改变长度。切片是轻量级的数据结构,三个属性,指针,长度,容量不需要指定大小切片是地址传递(引用传递)可以通过数组来初始化,也可以通过内置函数make()来初始化,初始化的时候len=cap,然后进行扩容。
题目ID-18 Go 语言当中数组和切片在传递的时候的区别是什么
-
数组是值传递
-
切片看上去像是引用传递,但其实是值传递。切片的值传递是复制的切片中数组point的指针,所以造成的现象是修改切片数据,调用者也变了,实际上他们修改的都是底层数组的数据。
题目ID-19 Go 语言是如何实现切片扩容的?
切片是自动扩容的,即若切片中元素超过了容量上限,切片会自动调整容量。在容量小于1024时,每次扩容,容量翻倍。容量大于1024后,每次扩容,容量增加1/4。
如果新申请容量大于2倍的旧容量,最终容量就是新申请的容 量。