Golang判断对象是某个结构体的实例

package main

import "fmt"

type Error struct {
    Code    int
    Msg     string
    UserMsg string
}

func setErrorMsg(err *Error, value interface{})  {
    err.Msg = fmt.Sprintf(err.Msg, value)
}

func main() {
    e := Error{
        Code:    400403,
        Msg:     "error: %v",
        UserMsg: "错误",
    }

    setErrorMsg(&e, "hello world")
    fmt.Println(e)

    // 断结构体对象 e 是 结构体Error的实例
    _, ok1 := interface{}(e).(Error)
    fmt.Println("ok1: ",ok1)   // 输出OK
}

输出结果如下:

{400403 error: hello world 错误}
ok1:  true

用对象进行断言时,需要先将对象转换成空接口类型: interface{}(e)

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

推荐阅读更多精彩内容