开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情
今天来学习下Go常见的习题问题(二十四),也是面试中可能会遇到的,让我们来一起学习吧~
cap()函数
关于下列选项中,哪些是可以使用cap()函数的?
- A. arry(数组)
- B. channel
- C. map
- D. slice
参考答案:选择ABD,具体的作用如下所示:
- arry 返回 数组 的元素个数
- slice 返回 slice 的最大容量
- channel 返回 channel 的容量
可变函数
观察下列代码,判断输出结果是什么?
func hello(num ...int) {
num[0] = 18
}
func Test_(t *testing.T) {
i := []int{5, 6, 7}
hello(i...)
fmt.Println(i[0])
}
func main() {
t := &testing.T{}
Test_(t)
}
参考答案:输出结果为18,因为可变函数是指针传递,是可以修改切片的值。并且对于一个函数,只有最后一个参数才能是可变的,写法是加上前缀符号 ...,就可以接收任意数量的参数,将切片传递给可变函数的时候,不能直接传递切片,因为可变函数的类型是int,而切片类型是[]int这两者不能直接转换,所以可以通过go的语法糖在切片后加...可以将切片以参数形式传递给函数
全局变量定义
观察下列选中中,哪个符合定义一个包内全局字符串变量的语法?
- A. var str string
- B. str := “”
- C. str = “”
- D. var str = “”
参考答案:选择AD,全局变量申明是在函数之外,而短变量声明方式只能发生在函数体内,所以B不能选择,C选项没有加上关键字var
总结
今天浅谈了Go的习题(二十四),主要介绍了GO面试中会出现的问题,接下来会继续分享其他的习题的相关知识,对于一个刚入门的我来说,还有许多地方需要学习,有错误的地方欢迎大家指出,共同进步!!