题目来源于牛客网html
成员变量或者函数的首字母表示是否对外部可见。web
switch后面的声明语句和表达式语句都是能够选择的。例如:编程
//能够什么都不加 switch: break;
错误指的是可能出现问题的地方出现了问题,好比打开一个文件时失败,这种状况在人们的意料之中;而异常指的是不该该出现问题的地方出现了问题,好比引用了空指针,这种状况在人们的意料以外。由此可知,错误是业务过程的一部分,而异常不是 。api
Golang中引入error接口类型做为错误处理的标准模式,若是函数要返回错误,则返回值类型列表中确定包含error。error处理过程相似于C语言中的错误码,可逐层返回,直到被处理。框架
Golang中引入两个内置函数panic和recover来触发和终止异常处理流程,同时引入关键字defer来延迟执行defer后面的函数。
一直等到包含defer语句的函数执行完毕时,延迟函数(defer后的函数)才会被执行,而无论包含defer语句的函数是经过return的正常结束,仍是因为panic致使的异常结束。你能够在一个函数中执行多条defer语句,它们的执行顺序与声明顺序相反。
当程序运行时,若是遇到引用空指针、下标越界或显式调用panic函数等状况,则先触发panic函数的执行,而后调用延迟函数。调用者继续传递panic,所以该过程一直在调用栈中重复发生:函数中止执行,调用延迟执行函数等。若是一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,而后终止其余全部携程,包括主携程(相似于C语言中的主线程,该携程ID为1)。函数
错误和异常从Golang机制上讲,就是error和panic的区别。不少其余语言也同样,好比C++/Java,没有error但有errno,没有panic但有throw。post
Golang错误和异常是能够互相转换的:spa
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。例如:.net
package main import "fmt" func main() { /* 建立map */ countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"} fmt.Println("原始地图") /* 打印地图 */ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } /*删除元素*/ delete(countryCapitalMap, "France") fmt.Println("法国条目被删除") fmt.Println("删除元素后地图") /*打印地图*/ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } }
一个文件夹下只能有一个包,能够多个.go文件,但这些文件必须属于同一个包。线程
Go语言取反方式和C语言不一样,Go语言不支持~符号。
Go语言中访问成员变量的方式只有 . 号(由于->是用于通道的操做符,因此Go语言中指针不支持->操做符),而且Go语言足够智能,可以自动解引用,但智能也是有限的,只能解一次引用,指针的指针还得本身动手解引用。
当使用p的值的时候会自动转为使用指针的形式访问。
官方给出的Beego框架概览(MVC模式的构造)
A选项正确,这就是互斥锁的做用
RWMutex.RLock()时,能够随便读,多个goroutin同时读。不能写;RWMutex.Lock()时,不能读,也不能写。所以BC正确。
不管是RWMutex仍是Mutex,与Lock()对应的都是Unlock(),因此D错误。
本次练习了解了switch语句、异常与错误的区别,delete函数对map的删除操做,const定义常量;重点关注了指针、同步锁的内容,同时get到了一个新的基于Go语言的web框架-Beego。