Q1:1.value是整型变量,下面if表达式符合编码规范的是()
A. if value == 0
B. if value
C. if value != 0
D. if !value
Q2:2.关于switch语句,下面说法正确的有()
A.条件表达式必须为常量或者整数
B.单个case中,可以出现多个结果选项
C.需要用break来明确退出一个case
D.只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case
Q3:3.关于整型切片的初始化,下面正确的是()
A. s := make([]int)
B. s := make([]int, 0)
C. s := make([]int, 5, 10)
D. s := []int{1, 2, 3, 4, 5}
Q4:4.关于main函数(可执行程序的执行起点),下面说法正确的是()
A. main函数不能带参数
B. main函数不能定义返回值
C. main函数所在的包必须为main包
D. main函数可以import导入的包或者声明的变量可以不使用
Q5:5.下面的程序的运行结果是()func main() { if (true) { defer fmt.Printf(1) } else { defer fmt.Printf(2) } fmt.Printf(3)}}
A.321
B.32
C.31
D.13
Q6:6.关于函数声明,下面语法错误的是()
A. func f(a, b int) (value int, err error)
B. func f(a int, b int) (value int, err error)
C. func f(a, b int) (value int, error)
D. func f(a int, b int) (int, int, error)
Q7:7.golang中大多数数据类型都可以转化为有效的JSON文本,下面几种类型除外()
A.指针
B.channel
C.map
D.函数
Q9:9.关于无缓冲和有冲突的channel,下面说法正确的是()
A.无缓冲的channel是默认的缓冲为1的channel
B.无缓冲的channel和有缓冲的channel都是同步的
C.无缓冲的channel和有缓冲的channel都是非同步的
D.无缓冲的channel是同步的,而有缓冲的channel是非同步的
Q10:10.关于同步锁,下面说法正确的是()
A. 当一个goroutine获得了Mutex后,其他goroutine就只能乖乖的等待,除非该goroutine释放这个Mutex
B. RWMutex在读锁占用的情况下,会阻止写,但不阻止读
C. RWMutex在写锁占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该goroutine独占
D. Lock()操作需要保证有Unlock()或RUnlock()调用与之对应
Q12:12.关于Context,以下正确的是()
A.线程安全,可以在多个goroutine中传递
B.调用ctx, cancel := context.WithTimeout(context.TODO())的时候拿到两个返回值后,cancel可以不执行
C.Context不能用于传递参数
D.context.Background()和context.Todo()本质上都是emptyCtx结构体类型