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错误 排错备忘
[关闭]