go笔记
This_is_Y Lv6

来自之前cnblog的博客
源地址:https://www.cnblogs.com/This-is-Y/p/14492860.html

学习网站:https://studygolang.gitbook.io/learn-go-with-tests/go-ji-chu/hello-world#bian-xie-ce-shi

编写测试

编写测试和函数很类似,其中有一些规则

 

  • 程序需要在一个名为 xxx_test.go 的文件中编写

  • 测试函数的命名必须以单词 Test 开始

    • 测试函数只接受一个参数 t *testing.T

    现在这些信息足以让我们明白,类型为 *testing.T 的变量 t 是你在测试框架中的 hook(钩子),所以当你想让测试失败时可以执行 t.Fail() 之类的操作。

     

    t.Errorf

    我们调用 tErrorf 方法打印一条消息并使测试失败。error后面的f 表示格式化,它允许我们构建一个字符串,并将值插入占位符值 %q 中。当你的测试失败时,它能够让你清楚是什么错误导致的。

     

     

    介绍了一种叫做TDD的程序设计方法论,即测试驱动开发(Test-Driven development)

    去查了一下这个东西:https://juejin.cn/post/6844903925842198536

    TDD三原则

    1. 除非为了通过一个单元测试,否则不允许编写任何产品代码。
    2. 在一个单元测试中只允许编写刚好能够导致失败的内容。
    3. 一次只能写通过一项单元测试的产品代码,不能多写。
    • You are not allowed to write any production code unless it is to make a failing unit test pass.
    • You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
    • You are not allowed to write any more production code than is sufficient to pass the one failing unit test.

     

     

     

    3.6

    for循环

    go里面没有whiledountil 这几个关键字,

    for循环的变体

     

     空白标识符可以接收一个不需要用的参数,最常用的地方就是在 使用range 迭代数组时,每次迭代都会返回数组元素的索引和值。我们选择使用 _ 空白标志符 来忽略索引。

     

     

     

    3.7

    函数

    函数可变参数

     

     

    ** 方法 reflect.DeepEqual**

    这个方法在比较两个数组元素是否完全相同时很好用

     两个数组完全相同返回true,否则返回false

     

     

    方法make

    一种创建切片的新方式。make 可以在创建切片的时候指定我们需要的长度和容量。
    我们可以使用切片的索引访问切片内的元素,使用 = 对切片元素进行赋值。

     

    切片处理

    使用语法 slice[low:high] 获取部分切片,比如

     就可以获取到从第二个到第五个元素,如果在冒号的一侧没有数字就会一直取到最边缘的元素,比如

     就可以获取到从第二个开始到最后的元素

     

    结构体

    go定义结构体和c语言一样,在定义方法时有所区别,不过在调用的时候是一样的

     

     接口

     https://www.zhihu.com/question/318138275

    稍微学习了一下接口的意思,但还是比较模糊。知乎里说到的鸭子模型,只要它能达到我所设置的成为鸭子的条件,那它就是鸭子。

     可以看到在两种手机,两种电脑中,乱入了一台假装自己是手机的电脑,当LapTop定义了这样两个方法后,它即实现了手机这个接口,又实现了电脑这个接口。于是出现了下面的情况

     但是只得注意的是,computer.call()并不能执行,虽然这里的computer本质是LapTop,而LapTop有call()这个方法,但是因为接口的关系,它在这里只能成为computer(好像有点绕)

    用蓝皮书上说的,接口就是一种约定

     

     Comments