gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/interfacer/testdata/files/used_func.go (about)

     1  package foo
     2  
     3  type Closer interface {
     4  	Close()
     5  }
     6  
     7  type ReadCloser interface {
     8  	Read(p []byte) (n int, err error)
     9  	Closer
    10  }
    11  
    12  func Wrong(rc ReadCloser) { // WARN rc can be Closer
    13  	rc.Close()
    14  }
    15  
    16  func receiver(f func(ReadCloser)) {
    17  	var rc ReadCloser
    18  	f(rc)
    19  }
    20  
    21  func Correct(rc ReadCloser) {
    22  	rc.Close()
    23  }
    24  
    25  func CorrectUse() {
    26  	receiver(Correct)
    27  }
    28  
    29  var holder func(ReadCloser)
    30  
    31  func Correct2(rc ReadCloser) {
    32  	rc.Close()
    33  }
    34  
    35  func CorrectAssign() {
    36  	holder = Correct2
    37  }
    38  
    39  func CorrectLit() {
    40  	f := func(rc ReadCloser) {
    41  		rc.Close()
    42  	}
    43  	receiver(f)
    44  }
    45  
    46  func CorrectLitAssign() {
    47  	f := func(rc ReadCloser) {
    48  		rc.Close()
    49  	}
    50  	var f2 func(ReadCloser)
    51  	f2 = f
    52  	f2(nil)
    53  }
    54  
    55  func CorrectLitDecl() {
    56  	f := func(rc ReadCloser) {
    57  		rc.Close()
    58  	}
    59  	var f2 func(ReadCloser) = f
    60  	f2(nil)
    61  }