golang题目
声明:以下选择题可能为多选
选择题1:下列哪个语法不对
A. func f(a, b int) (value int, err error)
B. func f(a, b int) (value int, error)
C. func f(a int, b int) (int, int, error)
D. func f(a int, b int) (value int, err error)
选择题2:下列哪个类型不能转化为正确的Json数据
A. 指针
B. channel
C. complex
D. 函数
选择题3:下列哪个add函数调用正确
func add(args …int) int {
sum :=0
for _, arg := range args {
sum += arg
}
return sum
}
A. add(1, 2)
B. add(1, 3, 7)
C. add([]int{1, 2})
D. add([]int{1, 3, 7}…)
选择题4:init函数,哪个正确
A.程序编译时,先执行导入包的init函数,再执行本包内的init函数
B. 一个包中,可以包含多个init函数
C. main包中,不能有init函数
D. init函数可以被其他函数调用
选择题5:请问输出结果顺序
“`go
func main() {
i := 0
if true {
defer fmt.Println(i)
i++
} else {
defer fmt.Println(i + 1)
}
i++
fmt.Println(i)
}
“`
———————
声明:以下编程题均为可执行的二进制文件
编程题1:去除slice中重复字符串元素(testing包最好测试一下耗时)
[]string{“a”, “a”, “b”, “b”, “v”, “d”, “v”, “d”, “c”,”d”}
编程题2:使用数组指针,重写以下函数(注意是把参数:(s []string) 改成数组指针)
“`go
func reverse(s []string) []string {
var n []string
for i := len(s) – 1; i >= 0; i– {
n = append(n, string(s[i]))
}
return n
}
“`
编程题3:使用1个goroutine, select, channal实现一个协程传参(int类型)到另外一个协程每一秒加1执行10秒后通知另外一个协程输出结果
编程题4:请使用下列map(m1, m2内容一样),分别写一个for循环修改他们的年龄为2(注意m1,m2都要修改)
“`go
type Student struct {
Name string
Age string
}
var m1 = map[string]Student{
“张三”: Student{
Name: “张三”,
Age: 1,
},
“李四”: Student{
Name: “李四”,
Age: 1,
},
}
var m2 = map[string]*Student{
“张三”:: &Student{
Name: “张三”,
Age: 1,
},
“李四”: &Student{
Name: “李四”,
Age: 1,
},
}
“`
编程题5:类A 类B 实现下列接口 ,并将两个类传入下面map中,for循环SetType类A为1, 类B为2,再for输出GetType
“`go
//接口
type IAnything interface {
GetType() int //获取类型
SetType(typ int) //设置类型
}
var AnythingMap = map[int]IAnything{}
“`
———————
