diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index e77537c9a5..d339769b9a 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -8024,6 +8024,7 @@ func TestValue_Len(t *testing.T) { } func TestValue_Comparable(t *testing.T) { + var iNil interface{} var a int var s []int var i interface{} = a @@ -8035,6 +8036,11 @@ func TestValue_Comparable(t *testing.T) { comparable bool deref bool }{ + { + ValueOf(&iNil).Elem(), + true, + false, + }, { ValueOf(32), true, diff --git a/src/reflect/value.go b/src/reflect/value.go index 60ba79a6e6..6cc1e7fad6 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -3413,7 +3413,7 @@ func (v Value) Comparable() bool { return v.Type().Comparable() case Interface: - return v.Elem().Comparable() + return v.IsNil() || v.Elem().Comparable() case Struct: for i := 0; i < v.NumField(); i++ {