Skip to content

error: it's really easy make mistake that return custom error assign to defined interface error #20389

Closed
@tnclong

Description

@tnclong

Please answer these questions before submitting your issue. Thanks!

What version of Go are you using (go version)?

go version go1.8 darwin/amd64

package main

import (
	"fmt"
)

type ValidationError struct {
	Code string
	Msg  string
}

func (e ValidationError) Error() string {
	return e.Code + e.Msg
}

func ReturnErr() *ValidationError {
	return nil
}

func ReturnInterfaceErr() error {
	var err *ValidationError
	return err
}

func main() {
	var err1 error
	err1 = ReturnErr()

	var err2 error = ReturnErr()

	var err3 = ReturnErr()

	// err1 false
	fmt.Println("err1", err1 == nil)
	// err2 false
	fmt.Println("err2", err2 == nil)
	// err3 true
	fmt.Println("err3", err3 == nil)

	var err4 error
	err4 = ReturnInterfaceErr()

	// err4 false
	fmt.Println("err4", err4 == nil)

}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions