Golang(九十九)[练习题]

slice

1.对于局部变量整型切片x的赋值,下面定义正确的是( )

  • A.
x:=[]int{
	1,2,3,
	4,5,6,
}
  • B.
x:=[]int{
	1,2,3,
	4,5,6
}
  • C.
x:=[]int{
	1,2,3,
	4,5,6}
  • D.
x:=[]int{1,2,3,4,5,6,}

解析:ACD

map

1.关于map,下面说法正确的是:

  • A.map反序列化时json.unmarshal的入参必须为map的地址
  • B.在函数调用中传递map,则子函数中对map元素的增加不会导致父函数中map的修改
  • C.在函数调用中传递map,则子函数中对map元素的修改不会导致父函数中map的修改
  • D.不能使用内置函数delete删除map的元素

解析:A
1.在src/encoding/json/decode.go中json的反序列化操作Unmarshal(data []byte, v interface{})函数必须传入的是一个 interface{}的引用类型指针,所以入参必须为map的地址

func Unmarshal(data []byte, v interface{}) error

2.Go中只有值传递,没有引用传递,map作为函数参数,执行的是地址值的拷贝,即使扩容时也不会改变这个地址,B/C选项的操作必然修改源map的值。

3.在src/builtin/builtin.go中可以使用内置函数delete(map,key)按照key进行对map元素的删除操作。

// The delete built-in function deletes the element with the specified key
// (m[key]) from the map. If m is nil or there is no such element, delete
// is a no-op.
func delete(m map[Type]Type1, key Type)

defer

1.下面程序的运行结果是:

func main() {
	if true {
		defer fmt.Printf("1")
	} else {
		defer fmt.Printf("2")
	}
	fmt.Printf("3")
}
  • A.321
  • B.32
  • C.31
  • D.13

解析:C
defer为延迟执行,顺序遵循先进后出的类似于栈的执行顺序:

  • 1.同一个函数内的多个defer,靠下的先执行,靠上的后执行。
  • 2.不同级的defer,内层先执行,外层后执行。

题中先打印3,后执行defer的部分,if的条件为true,执行打印1,else则不再执行。

function

1.可以给任意类型添加相应的方法。这一说法是否正确?

  • A. true
  • B.false

解析:B
必须是自定义类型

import

1.import后面的最后一个元素是包名.

  • A.正确
  • B.错误

解析:B
1.import后面跟的是包的路径,而不是包名;
2.import时写路径名,引用时写包名。

point

1.golang中的指针运算包括( )

  • A.可以对指针进行自增或自减运算
  • B.可以通过“&”取指针的地址
  • C.可以通过“*”取指针指向的数据
  • D.可以对指针进行下标运算

解析:BC
1.golang可以对指针【&】取指针的地址
1.golang可以对指针【*】取指针指向的内容

Mutex

1.关于同步锁,下面说法正确的是( )

  • A.当一个goroutine获得了Mutex后,其他goroutine就只能乖乖的等待,除非该goroutine释放这个Mutex
  • B.RWMutex在读锁占用的情况下,会阻止写,但不阻止读
  • C.RWMutex在写锁占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该goroutine独占
  • D.Lock()操作需要保证有Unlock()或RUnlock()调用与之对应

解析:ABC
1.写写互斥
读写互斥
读读相容1、RWMutex.RLock()时,可以随便读。多个goroutin同时读。不能写。
2、RWMutex.Lock()时(写的时候),啥都不能干。不能读,也不能写。
A选项正确,这就是互斥锁的作用
B和C看以上两条规则
D无论是RWMutex还是Mutex,与Lock()对应的都是Unlock()

beego

1.关于beego框架,下面说法正确的是()

  • A.beego是一个golang实现的轻量级HTTP框架
  • B.beego可以通过注释路由、正则路由等多种方式完成url路由注入
  • C.可以使用bee new工具生成空工程,然后使用bee run命令自动热编译
  • D.beego框架只提供了对url路由的处理, 而对于MVC架构中的数据库部分未提供框架支持

解析:ABC

发布了48 篇原创文章 · 获赞 14 · 访问量 4153

猜你喜欢

转载自blog.csdn.net/weixin_42366378/article/details/105051139