2019年第21周 2019/05/20 – 2019/05/26
Algorithm LeetCode 29
Review Review 《JSON and Go》
Tips 在 Go 中屏蔽类型某个接口的方法
Share Golang 新手可能会踩的50个坑

Algorithm

Review

Tips

在 Go 中屏蔽类型某个接口的方法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import (
	"bytes"
	"fmt"
	"io"
)

type Buffer struct {
	// ReadFrom 和 WriteTo 在两个地方定义了,所以 Buffer 无法正确调用
	bytes.Buffer
	io.ReaderFrom
	io.WriterTo
}

func main() {
	buf := make([]byte, 1024)
	reader := bytes.NewBuffer(buf)
	rb := new(Buffer)

	fmt.Println(rb.ReadFrom(reader))
	//ambiguous selector rb.ReadFrom
}

在上述代码中,我们新定义了Buffer类型,并在其中包含了bytes.Buffer类型, io.ReaderFromio.WriterTo接口。 此时我们就相当于在实现了一种新的bytes.Buffer类型,并屏蔽了io.ReaderFromio.WriterTo接口。 如果我们直接就用这两个接口方法,就会出现编译错误ambiguous selector rb.ReadFrom/rb.WriteTo

Share