老师问个问题

来源:9-1 Ubuntu下通过Docker安装RabbitMQ

xiaoyyyyy

2020-06-12

reflect.TypeOf((*error)(nil)) 中 (*error)(nil) 应该怎么理解呢

写回答

1回答

xiaomo

2020-06-14

同学你好,(*error)(nil)的意思可以理解为通过nil来实例化*error类型。这种用法在 判断某个类型是否实现了某种接口时 的场景会比较常见,比如:

package main

import (
    "fmt"
    "io"
    "os"
    "reflect"
)

func main() {
    // 实例化*io.Writer类型
    wType := reflect.TypeOf((*io.Writer)(nil)).Elem()
    // 实例化*os.File类型
    fType := reflect.TypeOf((*os.File)(nil))
    // 判断*os.File类型是否实现了Writer接口
    fmt.Println(fType.Implements(wType))
}

// 运行结果: true
0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程