Go语言学习笔记(一)----interface, you are not using it enough

2020-07-09 00:00:00 语言 代码 开发者 测试 定义
近在学习GO语言,正在通过写一个MongoProfile来实践,程序的要求是:

实现一组 Restful API,读取 Mongodb profile,计算一年内每天,每周,每月的平均响应时间并返回 JSON 格式数据。

我是使用gin来实现的,功能不难,但是在再unit test的时候还遇到了一些槛,我发现自己的写法很难做Mock,于是做了大量的搜索,希望能用很符合go语言风格的方式,解决这个问题。找到的其中一篇文章是《You're Not Using This Enough, Part One: Go Interfaces》,原文是英文的,于是想通过翻译这篇文章,做一些分享。下面是原文内容:

Go语言正变的越来越流行,但是由于一些开发者在不断的追问为什么还没有泛型给新人造成了一些困扰,事实上很多开发者不使用泛型也很好的解决了问题。基于我近Go语言方面的尝试,希望和你们分享一下我提高代码灵活性和测试性的解决方案。

我的的建议是尽可能多的使用Interface,特别是当我在写自动化测试Go代码时,当我发现struct变得越来越大越重要时,就是时候拆分成interface了。

下面将从下面两个方面开始本文:


  • Fast Interface Review
  • Testing with Interfaces

  • Fast Interface Review

    首先定义一个有以下方法的interface:

    type Config interface {
        Get(key string) (string, error)
        Set(key, val string) (error)
    }

    相关文章