一、判断题

defer应该在if后面,如果文件为空,close会崩溃。

package main

import (
"os"
"fmt"
) func main() {
file, err := os.Open("/null")
defer func() {
err := file.Close()
if err != nil {
fmt.Println("close error: ", err)
} else {
fmt.Println("close no error")
}
}() if err != nil {
fmt.Println("open error! ", err)
return
}
}

数组是值类型,也是按值传递的;切片slide是引用类型。

import后面跟的是包的路径,而不是包名;

同一个目录下可以有多个.go文件,但是只能有一个包;

使用第三方库时,先将源码编译成.a文件放到临时目录下,然后去链接这个.a文件,而不是go install安装的那个.a文件;

使用标准库时,直接链接.a文件,即使修改了源码,也不会从新编译源码;

不管使用的是标准库还是第三方库,源码都是必须存在的,即使使用的是.a文件。

当内置的panic()函数调用时,外围函数或方法的执行会立即终止。然后,任何延迟执行(defer)的函数或方法都会被调用,就像其外围函数正常返回一样。最后,调用返回到该外围函数的调用者,就像该外围调用函数或方法调用了panic()一样,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数等。当到达main()函数时不再有可以返回的调用者,因此这个过程会终止,并将包含传入原始panic()函数中的值的调用栈信息输出到os.Stderr。

panic需要等defer结束后才会向上传递。出现panic的时候,会先按照defer的后入先出的顺序执行,最后才会执行panic。

几乎所有类型包括内置类型,均可以自定义方法。除了指针。func (a *Integer) Multi(b Integer){ }。
 

二、选择题

无缓冲的channel是同步的,而有缓冲的channel是非同步的。比如
c1:=make(chan int)        //无缓冲

c2:=make(chan int,)      //有缓冲

c1<-1

无缓冲的,不仅仅是 向 c1 通道放 1 而是 一直要有别的协程 <-c1 接手了 这个参数,那么c1<-1才会继续下去,要不然就一直阻塞着,

而 c2<-1 则不会阻塞,因为缓冲大小是1, 只有当放第二个值的时候 第一个还没被人拿走,这时候才会阻塞。

打个比喻:

无缓冲的——就是一个送信人去你家门口送信 ,你不在家他不走,你一定要接下信,他才会走。因此无缓冲保证信能到你手上

有缓冲的 就是一个送信人去你家仍到你家的信箱转身就走 ,除非你的信箱满了他必须等信箱空下来。有缓冲的保证信能进你家的邮箱

go中实现try catch finally的机智是defer,panic,recover机制。对已经关闭的channel发送数据会导致panic异常

package main

import (
"fmt"
) func main() {
var ch chan int = nil //make(chan int)
go func() {
for i := ; i < ; i++ {
ch <-
}
close(ch)
}()
for i := ; i < ; i++ {
fmt.Println(<-ch)
}
}

GoStub框架的使用场景很多,依次为:

  1. 基本场景:为一个全局变量打桩
  2. 基本场景:为一个函数打桩
  3. 基本场景:为一个过程打桩
  4. 复合场景:由任意相同或不同的基本场景组合而成

三、参考资料

理解Golang包导入

GoStub框架使用指南

C++ this指针详解

牛客网_Go语言相关练习_判断&选择题(5)的更多相关文章

  1. 牛客网_Go语言相关练习_判断&选择题(6)

    本文共34道题目 一.判断题 此题考查编码规范. 反射最常见的使用场景是做对象的序列化(serialization,有时候也叫Marshal & Unmarshal). 例如:Go语言标准库的 ...

  2. 牛客网_Go语言相关练习_判断&选择题(4)

    题目来源于牛客网 一.判断题 成员变量或者函数的首字母表示是否对外部可见. switch后面的声明语句和表达式语句都是可以选择的.例如: //可以什么都不加 switch: break; 错误指的是可 ...

  3. 牛客网_Go语言相关练习_选择题(1)

    声明:题目源自牛客网. 一.单项选择题 解析:作为形参时,可以要求单向,只读或只写. 解析:Go语言的内存回收机制规定,只要有一个指针指向引用一个变量,那么这个变量就不会被释放(内存逃逸),因此在Go ...

  4. 牛客网_Go语言相关练习_选择题(3)

    题目来源于牛客网 一.选择题 Go语言自带垃圾回收机制. 如果是值传递的话子函数对map修改不会影响父函数中的map,如果是地址传递则会影响. go语言编译器会自动在以标识符.数字字面量.字母字面量. ...

  5. 牛客网_Go语言相关练习_选择题(2)

    注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...

  6. 关于牛客网C语言结构体位域(bit-fields)的一道题

    题目链接地址: https://www.nowcoder.com/questionTerminal/f4e20747a2dd4649bac0c028daa234f4 来源:牛客网 低地址字节 Byte ...

  7. 牛客网 --java问答题

    http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是“平台无 ...

  8. 【转自牛客网】C++类职位校招

    作者:./a.out链接:https://www.nowcoder.com/discuss/14022来源:牛客网 话说在牛客网上混迹了半年,也没啥拿的出手的贡献.现在基本上自己的校招生涯要告一段落, ...

  9. 牛客网 - vivo2020届春季

    牛客网 - vivo2020届春季 1.[编程题]手机屏幕解锁模式 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 现有一个 3x3 规格的 Android ...

随机推荐

  1. BZOJ.5120.[清华集训2017]无限之环(费用流zkw 黑白染色)

    题目链接 LOJ 洛谷 容易想到最小费用最大流分配度数. 因为水管形态固定,每个点还是要拆成4个点,分别当前格子表示向上右下左方向. 然后能比较容易地得到每种状态向其它状态转移的费用(比如原向上的可以 ...

  2. Python3练习题系列(09)——物以类聚,人以群分

    目标: 用类管理同类事物 解析: 用到“class”的编程语言被称作“Object Oriented Programming(面向对象编程)”语言.首先你需要做出“东西”来,然后你“告诉”这些东西去完 ...

  3. [CC-PERMUTE]Just Some Permutations 3

    [CC-PERMUTE]Just Some Permutations 3 题目大意: \(T(T\le10^5)\)次询问,每次询问有多少长度为\(n(n\le10^6)\)的排列,满足任意相邻两个数 ...

  4. 迪杰斯特拉算法dijkstra(可打印最短路径)

    #include <iostream> #include <iomanip> #include <string> using namespace std; #def ...

  5. Leaflet_扩展Leaflet:类(2017-10-26)

    扩展教程:http://leafletjs.com/examples/extending/extending-1-classes.html 翻译 该教程介绍扩展Leaflet最常用的方式. 注意:本文 ...

  6. IEEE 754二进制浮点数算术标准

    可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...

  7. windows环境下面批量移动文件到指定文件夹里面

    move D:批量新建文件夹\upload\20171225173033565_2052.jpg D:批量新建文件夹\1623 move D:批量新建文件夹\upload\20171225174344 ...

  8. 【Yaml】Yaml学习笔记

    转载:https://blog.csdn.net/moshenglv/article/details/52084899 YAML何许物也?在XML泛滥的情况下,YAML的出现的确让人眼前一亮,在初步学 ...

  9. 通过action传过来的值在option获取进行验证

    通过action传过来的值在option获取进行验证的方法: for(var i=0;i<document.getElementById("ufacilityType").o ...

  10. Window下对nodejs多版本管理GNVM

    Windows下对nodejs多版本的管理,实现随意切换! 官方地址: https://github.com/Kenshin/gnvm http://ksria.com/gnvm/ 01.下载GNVM ...