init commit
This commit is contained in:
42
archive/go/interface_test.go
Normal file
42
archive/go/interface_test.go
Normal file
@ -0,0 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type If interface {
|
||||
Demo() int
|
||||
}
|
||||
|
||||
type S struct {
|
||||
a int
|
||||
}
|
||||
|
||||
func (s *S) Demo() int {
|
||||
s.a++
|
||||
return s.a
|
||||
}
|
||||
func TestInterface(t *testing.T) {
|
||||
s := S{}
|
||||
var i If
|
||||
i = &s
|
||||
i.Demo()
|
||||
assert.Equal(t, s.a, 1)
|
||||
}
|
||||
|
||||
func TestInterfaceEqual(t *testing.T) {
|
||||
var i1, i2 If
|
||||
s := S{a: 2}
|
||||
assert.Equal(t, i1, i2)
|
||||
i1 = &s
|
||||
i2 = &s
|
||||
assert.Equal(t, i1, i2)
|
||||
var s2 *S
|
||||
i1 = s2
|
||||
i2 = nil
|
||||
t.Logf("s2:%v,i1 value:%v,i2 value:%v,i1 type:%T,i2 type:%T",
|
||||
s2, i1, i2, i1, i2)
|
||||
assert.NotEqual(t, i1, i2)
|
||||
}
|
Reference in New Issue
Block a user