gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/interfacer/testdata/files/nested_func.go (about) 1 package foo 2 3 type Closer interface { 4 Close() error 5 } 6 7 type Reader interface { 8 Read(p []byte) (n int, err error) 9 } 10 11 type ReadCloser interface { 12 Reader 13 Closer 14 } 15 16 func FooGo(rc ReadCloser) { 17 rc.Read(nil) 18 go func() { 19 rc.Close() 20 }() 21 } 22 23 func FooArg(rc ReadCloser) { 24 rc.Read(nil) 25 f := func(err error) {} 26 f(rc.Close()) 27 } 28 29 func FooGoWrong(rc ReadCloser) { // WARN rc can be Closer 30 go func() { 31 rc.Close() 32 }() 33 } 34 35 func FooArgWrong(rc ReadCloser) { // WARN rc can be Closer 36 f := func(err error) {} 37 f(rc.Close()) 38 } 39 40 func FooNestedWrongIgnored(rc ReadCloser) { // WARN rc can be Reader 41 f := func(rc ReadCloser) { 42 rc.Close() 43 } 44 f(nil) 45 b := make([]byte, 10) 46 rc.Read(b) 47 }