33.�0�2【中级】�0�2golang中的引用类型包括()
A.�0�2数组切片
B. map
C. channel
D. interface
参考答案:ABCD
这道题已经过时了,在2013年4月3日的github提交中已经明确说了“Go has no 'reference types'”。而slice源码的说明也由“引用”改成了“描述符”。Go只有值传递,没有所谓的引用传递。上题应该改为哪些类型包含有指针。
34.�0�2【中级】�0�2golang中的指针运算包括()
A.�0�2可以对指针进行自增或自减运算
B.�0�2可以通过“&”取指针的地址
C.�0�2可以通过“*”取指针指向的数据
D.�0�2可以对指针进行下标运算
参考答案:BC
D选项应该也是对的,在Go13.8里指向数组的指针的下标运算是可以支持的:
package main
import "fmt"
func main() {
var a = [3]int{998, 999, 1000}
var ip *[3]int = &a
for i := 0; i < len(a); i++ {
fmt.Printf("ip[%d]=%d\n", i, ip[i])
}
}
输出:
ip[0]=998
ip[1]=999
ip[2]=1000
36.�0�2【中级】下面赋值正确的是()
A. var x = nil
B. var x interface{} = nil
C. var x string = nil
D. var x error = nil
参考答案:BD
可以赋值成nil的变量类型有7种:1)任意类型的指针变量,2)函数变量,3)接口,4)error,5)map, 6)切片 7)通道。这些变量默认值就是nil,实际上都不用赋值成nil。
package main
import "fmt"
func main() {