zoukankan      html  css  js  c++  java
  • 牛客网_Go语言相关练习_选择题(3)

    题目来源于牛客网

    一、选择题

    Go语言自带垃圾回收机制。

    如果是值传递的话子函数对map修改不会影响父函数中的map,如果是地址传递则会影响。

    go语言编译器会自动在以标识符、数字字面量、字母字面量、字符串字面量、特定的关键字(break、continue、fallthrough和return)、增减操作符(++和--)、或者一个右括号、右方括号和右大括号(即)、]、})结束的非空行的末尾自动加上分号。
    B选项,6是数字字面量,所以在6的后面会自动加上一个分号,导致编译出错
    D选项,gofmt会自动把6后面的“,”去掉,关掉gofmt后测试,也能通过编译,正常运行。
     

    可以声明一个未指定大小的数组来定义切片,var identifier [ ]type 切片不需要说明长度

    或使用make函数来创建切片 var slice1 []type = make([ ]type ,Len)

    也可以指定容量 make([ ]T ,length, capacity)。

    只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值。-AB正确。

    Go语言接口是否可以赋值,是在编译期就确定的。D错误。

    接口的查询是在运行期确定。C正确。

    //interface{}本身是type,怎么赋值呢?只可能出现:
    var v1 interface1
    var v2 interface2 
    
    v1 = v2 

    bool类型与int类型无法强制转换。D错误。

    <-  ch 可以单独调用获取通道的(下一个)值,当前值会被丢弃,但是可以用来验证。

    D选项应改为 ch <– value

    mock对象的注入:

    mock对象的行为都注入到控制器以后,我们接着要将mock对象注入给interface,使得mock对象在测试中生效。

    在使用GoStub框架之前,很多人都使用土方法,比如Set。这种方法有一个缺陷:当测试用例执行完成后,并没有回滚interface到真实对象,有可能会影响其它测试用例的执行。所以,笔者强烈建议大家使用GoStub框架完成mock对象的注入。
    1. 全局变量可通过GoStub框架打桩
    2. 过程可通过GoStub框架打桩
    3. 函数可通过GoStub框架打桩
    4. interface可通过GoMock框架打桩

    二、参考资料

    GoMock框架使用指南

    Golang错误和异常处理的正确姿势

    Go Channel 详解_鸟窝

    深入理解 Go Channel

    GoMock

    gomock_GoDoc

    三、总结

    本次主要针对map,异常处理,切片,接口,布尔变量的赋值、channel的语法进行了练习,并了解了GoMock框架。

  • 相关阅读:
    项目实战从 0 到 1 学习之Flink (24)Flink将kafka的数据存到redis中
    LeetCode107. 二叉树的层次遍历 II
    LeetCode102. 二叉树的层序遍历
    LeetCode341. 扁平化嵌套列表迭代器
    【总结】二叉树的前中后序遍历(递归和非递归)
    LeetCode145. 二叉树的后序遍历
    LeetCode94. 二叉树的中序遍历
    LeetCode144. 二叉树的前序遍历
    LeetCode71. 简化路径
    LeetCode150. 逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/9408998.html
Copyright © 2011-2022 走看看