diff --git a/_test/issue-1342.go b/_test/issue-1342.go new file mode 100644 index 000000000..0f48d0b5b --- /dev/null +++ b/_test/issue-1342.go @@ -0,0 +1,12 @@ +package main + +import "fmt" + +func main() { + var a interface{} + a = "a" + fmt.Println(a, a == "a") +} + +// Output: +// a true diff --git a/interp/value.go b/interp/value.go index f3a0acf2b..d050668ae 100644 --- a/interp/value.go +++ b/interp/value.go @@ -595,5 +595,10 @@ func genComplex(n *node) func(*frame) complex128 { func genValueString(n *node) func(*frame) (reflect.Value, string) { value := genValue(n) + + if n.typ.TypeOf().Kind() == reflect.Interface { + return func(f *frame) (reflect.Value, string) { v := value(f); return v, v.Elem().String() } + } + return func(f *frame) (reflect.Value, string) { v := value(f); return v, v.String() } }