浅谈Go与习题(二十四)

69 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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面试中会出现的问题,接下来会继续分享其他的习题的相关知识,对于一个刚入门的我来说,还有许多地方需要学习,有错误的地方欢迎大家指出,共同进步!!