golang中一个interface类型潜在问题

package main

import (
    "errors"
    "fmt"
    "log"
)

func main() {
    var e interface{}
    e = func() error {
        return errors.New("err")
    }()
    if e != nil {
        fmt.Printf("%T\n", e)
        log.Println(e)
    }
    fmt.Println(e)
}
输出内容:

*errors.errorString
2019/01/05 18:54:43 err
err

这边很容易将e的类型误认为是error,但是实际运行中却被转换成*errors.errorString。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,952评论 0 38
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,459评论 1 9
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,882评论 3 64
  • 前言:这篇文章的关键词是个人提升,阅读需要5分钟。主要讲如何进行自我管理,如何处理兴趣与工作的关系,如何用正确的方...
    萌妈育儿记阅读 576评论 2 8
  • 本小节知识点: 【理解】实例变量的作用域 【掌握】变量修饰符在子类中的访问 【了解】实例变量作用域使用注意事项 1...
    还好我不懂阅读 231评论 0 0