关于go vendor,下面说法正确的是()
A. 基本思路是将引用的外部包的源代码放在当前工程的vendor目录下面
B. 编译go代码会优先从vendor目录先寻找依赖包
C. 可以指定引用某个特定版本的外部包
D. 有了vendor目录后,打包当前的工程代码到其他机器的$GOPATH/src下都可以通过编译参考答案:ABD
1.使用了go-mod模式,项目可以放在gopath的src下吗?和gopath的区别?
使用go-mod以后,项目可以放在任何非中文路径下,gopath必须放在gopath的src下
2.go vendor的作用?
将依赖包下载到项目根目录下的vendor文件夹,这样在写代码的时候可以有提示
1.下面属于关键字的是
A.def B.Class C.func D.struct E.var答案:C、D、E
2.定义全局变量,正确的做法是?
A.var Name string B.Name := "hallen" C.var Name string = "hallen"
D.var Name = "hallen" E.var Name string := "hallen"答案:A、C、D
3.关于局部变量的初始化,下面正确的使用方式是?
A. var i int = 10
B. var i = 10
C. i := 10
D. i = 10参考答案:ABC
4.对于以下的代码,获取成员变量正确的做法是?
type Student struct {
Name string
}func main() {
var student *Student
student = new(Student)
*student = Student{Name:"hallen"}
}A.student.Name B.(*student).Name C.(&student.Name) D.*student.Name答案:A、B
5.字符串拼接正确的是?
A."hello"+"hallen" B."hello"+'h' C."hello'+"hallen"
D.fmt.Printf("%s%s","hello","hallen") E.fmt.Sprintf("%s%s","hello","hallen")答案:A、E
6.已申明的bool类型变量ok,关于其赋值,下面说法错误的是()
var ok bool
A. ok = true
B. ok = 1
C. ok = bool(1)
D. ok = (1 == 2)参考答案:BC
8.关于switch语句,下面说法正确的是()
A. 条件表达式必须为常量或者整数
B. 单个case中,可以出现多个结果选项
C. 需要用break来明确退出一个case
D. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case参考答案:BD
9.golang中的引用类型包括()
A. 数组
B. map
C. channel
D. interface
E.数组切片参考答案:BCDE
10.golang中的指针运算包括()
A. 可以对指针进行自增或自减运算
B. 可以通过“&”取指针的地址
C. 可以通过“*”取指针指向的数据
D. 可以对指针进行下标运算参考答案:BC
11.关于整型切片的初始化,下面正确的是()
A. s := make([]int)
B. s := make([]int, 0)
C. s := make([]int, 5, 10)
D. s := []int{1, 2, 3, 4, 5}
参考答案:BCD
12.ok是bool型变量,下面if表达式符合编码规范的是()
A. if ok == 1{}
B. if ok{}
C. if ok == false{}
D. if !ok{}
参考答案:BD
13.value是整型变量,下面if表达式符合编码规范的是()
A. if value == 0 {}
B. if value {}
C. if value != 0{}
D. if !value{}参考答案:AC
14.关于map,下面说法正确的是()
A. map反序列化时json.marshal的入参必须为map的地址
B. 在函数调用中传递map,则子函数中对map元素的增加不会导致父函数中map的修改
C. 在函数调用中传递map,则子函数中对map元素的修改不会导致父函数中map的修改
D. 不能使用内置函数delete删除map的元素参考答案:A
15.下面赋值正确的是()
A. var x = nil
B. var x interface{} = nil
C. var x string = nil
D. var x error = nil答案:BD,nil 只能赋值给指针
16.下面代码的结果为?
str := "hallen"
str[0] = 'z'
fmt.Println(str)A.hallen B.zallen c.compilation error答案:c,Go 语言中的字符串是只读的,不能进行修改
二、简答题
1.简述数组和切片的区别;程序中什么场景使用数组,什么场景使用切片?
类型区分:数组是值类型,切片是引用
可变性:数组长度不可变,切片长度可变,数组:已知的长度
切片:一般在参长度可变,未知的长度
2.Go语言局部变量分配在栈还是堆?
Go语言编译器会自动决定把一个变量放在栈还是放在堆,
当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆。
3.int和uint的区别?两个uint值能不能直接相减?
int是正数和负数都可以
uint不能是负数uint不能直接相减,如果结果是负数会变成一个很大的uint
4.提示:slice底层是数组,保存了len,capacity和对数组的引用
5.下面代码输出结果为?
func main() {
slice := make([]int, 3)
slice = append(slice , 9, 8, 7)
fmt.Println(slice )
}答案:[0 0 0 9 8 7]
6.下面代码的区别?那个为nil?
var slice1 []int
var slice2 = []int{} // var slice2 []int = []int{}答案:s1为nil切片,和nil相等,s2为空切片,和nil不相等
7.分别写出下面代码的执行结果
func Get() (int,int){
return 3,4
}func main() {
var a int
a,_ = Get() // 结果为a=3
a,_ := Get() // 报错,a已申明,不需要自动推导
a,b := Get() // a=3,b=4
a,b = Get() // 报错,b没有申明
fmt.Println(a)}
8.go语言中指针运算有哪些?
可以通过“&”取指针的地址可以通过“*”取指针指向的数据
9.说说各种类型的缺省值?
指针的缺省值是nil,其他的都是对应类型的零值,bool类型的缺省值是false
10.map如何顺序读取?
map不能顺序读取,是因为他是无序的,
想要有序读取,
首先的解决的问题就是,把key变为有序,所以可以把key放入切片,对切片进行排序,遍历切片,通过key取值。map_data1 := map[string]interface{}{
"name":"hallen",
"age":18,
}keys := []string{}
for k,_ := range map_data1 {
keys = append(keys,k)
}sort.Strings(keys)for _,v := range keys {
fmt.Println(map_data1[v])
}
11.字符串打印时,%v 和 %+v 的区别
“%+v”会以字段键值对的形式key-value格式打印,“%v”只会打印字段值value信息
上一篇:内蒙古创业小本项目 内蒙古创业小本项目 内蒙古小本创业好项目哪家好
下一篇:2018有前景的小本创业项目 有前景的七个小本创业项目推荐 2021创业小本生意的项目有什么 2021小本生意创业项目商机