golang中一个interface类型潜在问题

简介: 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
AI 代码解读

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

目录
打赏
0
0
0
0
4
分享
相关文章
Golang底层原理剖析之slice类型与扩容机制
Golang底层原理剖析之slice类型与扩容机制
133 0
【Golang】解决使用interface{}解析json数字会变成科学计数法的问题
【2月更文挑战第9天】解决使用interface{}解析json数字会变成科学计数法的问题
400 0
Go interface实现分析
本文深入探讨了Go语言中接口的定义、实现及性能影响。接口作为一种“约定”,包含方法签名集合,无需依赖具体类型即可调用方法,隐藏了内部实现细节。文章分析了接口的两种实现方式(iface和eface)、按值与按指针实现的区别,以及nil接口与普通nil的区别。同时,通过反汇编代码对比了接口动态调用与类型直接调用的性能差异,指出接口调用存在内存逃逸和无法内联的问题。最后总结了接口的优势与局限性,强调在实际开发中需根据场景合理选择是否使用接口。
62 13
|
10月前
|
Go
Golang语言基础之接口(interface)及类型断言
这篇文章是关于Go语言中接口(interface)及类型断言的详细教程,涵盖了接口的概念、定义、实现、使用注意事项以及类型断言的多种场景和方法。
102 4
|
11月前
|
Go
Go - struct{} 实现 interface{}
Go - struct{} 实现 interface{}
70 9
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
72 1
|
10月前
|
Go
Golang语言基础数据类型之字符类型
这篇文章介绍了Go语言中的字符类型,包括字符概述、byte和rune类型的定义、转义字符的使用以及如何遍历字符串获取字符的示例。
59 0
Golang底层原理剖析之类型系统,接口与类型断言
Golang底层原理剖析之类型系统,接口与类型断言
156 2
Golang随笔之自动类型推导[:=]踩坑
Golang随笔之自动类型推导[:=]踩坑
72 0

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问