Go语言试题

1.Golang可以复用C/C++的模块,这个功能叫Cgo,这一说法是否正确。

A : 正确

B :错误

正确答案 :错误 ;解析 :Cgo是C语言和Go语言之间的桥梁,原则上无法直接支持C++的类。Cgo不支持C++语法的根本原因是C++至今为止还没有一个二进制接口规范(ABI)。Cgo只支持C语言中值类型的数据类型,所以我们是无法直接使用C++的引用参数等特性的。

 2.Golang可以复用C/C++的模块,这个功能叫Cgo,这一说法是否正确。

A : 正确

B :错误

正确答案 :错误 ;解析 :Cgo是C语言和Go语言之间的桥梁,原则上无法直接支持C++的类。Cgo不支持C++语法的根本原因是C++至今为止还没有一个二进制接口规范(ABI)。Cgo只支持C语言中值类型的数据类型,所以我们是无法直接使用C++的引用参数等特性的。

 3.channel本身必须同时支持读写的,所以不存在单向channel,这一说法是否正确

A : 正确

B :错误

正确答案 :正确 ;解析 :有单向通道。一般作为函数的参数或者返回值。 单向通道都是由双向通道转换而来,不能自己声明单向通道,没有意义。 单向通道作为函数或者方法的参数时,表示该函数或者方法作用域内,只能执行接收或者发送操作。 单向通道作为函数或者方法返回值时,表示调用者得到该通道后只能做单向操作。

4.关于布尔变量b的赋值,下面错误的用法是()

A : b = true

B : b = 1

C : b = bool(1)

D : b = (1 == 2)

正确答案 :B、C 解析 :bool类型与int类型没办法强制转换

5.关于Go变量的使用,以下代码编译错误的是哪个?

A : var b,f,s=true, 2.3, "four" fmt.Println("&v, &v, &v\n", b, f, s)

B : if f, err := os.Open("tet.png"); err != nil { return } f.Close

C : func delta(old, new int) int { return new - old}

D : medals := []string{"gold", "sliver","bronze"} fmt.Println("nedals: &v\n", medals)

 正确答案 :B 解析  :f作用域只在if里

posted @ 2021-08-26 14:04  -LikX-6-2-  阅读(189)  评论(0)    收藏  举报