教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang接口使用记录

golang接口使用记录

发布时间:2021-05-05   编辑:jiaochengji.com
教程集为您提供golang接口使用记录等资源,欢迎您收藏本站,我们将为您提供最新的golang接口使用记录资源

golang接口使用记录

1. 总述

接口类型是对其他类型行为的概括与抽象,Go语言的独特之在于它是隐式实现,无需申明它实现哪些接口,只要提供接口所必须的方法即可。

接口即约定

实现单词和行的计数器,考虑使用bufio.ScanWords

// counter.go
// 计数器  

type Counter interface {
    Count(fileName string) error  
}  
  
// 单词计数  
type WordCount int  
  
func (w *WordCount) Count(fileName string) error {  
    file, err := os.Open(fileName)  
    if err != nil {  
        return errors.New("open file fail: "   err.Error())  
    }
    scanner := bufio.NewScanner(file)  
    scanner.Split(bufio.ScanWords)  
    count := 0  
    for scanner.Scan() {  
        count  = 1  
    }  
    *w = WordCount(count)  
    return nil  
}  
  
  
// 行计数器  
type LineCount int  
  
func (l *LineCount) Count(fileName string) error {  
    file, err := os.Open(fileName)  
    if err != nil {  
        return errors.New("open file fail: " \  err.Error())  
    }  
    scanner := bufio.NewScanner(file)  
    scanner.Split(bufio.ScanLines)  
    count := 0  
    for scanner.Scan() {  
        count  = 1  
    }  
    *l = LineCount(count)  
    return nil  
}
// counter_test.go
// 计数器单测

func TestWordCount_Count(t *testing.T) {  
    var w WordCount  
    if err := w.Count("log"); err != nil {  
        t.Errorf("word count fail: %s", err.Error())  
        return  
    }  
    if w != 7 {  
        t.Error("word count not equal to 7")  
    }  
    t.Log("word count success")  
}  

func TestLineCount_Count(t *testing.T) {  
    var l LineCount  
    if err := l.Count("log"); err != nil {  
        t.Errorf("line count fail: %s", err.Error())  
        return  
    }  
    if l != 4 {  
        t.Error("line count not equal to 4")  
    }  
    t.Log("line count success")  
}
到此这篇关于“golang接口使用记录”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang接口使用记录
golang基础教程
GoLang - Go中接口的用法
使用nslookup查询域名DNS记录
【Golang 接口自动化00】为什么要用Golang做自动化?
golang 扩展package 列表
golang 接口开发入门01- 从0开始构建项目
如何判断Golang接口是否实现?
浅谈golang中的接口
golang服务发送http请求 400错误 排错备忘

[关闭]
~ ~