慕课go高级工程师实战营

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() {

上一篇:Go的tcp长连接


下一篇:[Leetcode]17.二叉树中和为某一值的路径