登录
首页 >  Golang >  Go问答

golang中这段代码在print时,为何会输出Error()方法的执行结果

来源:SegmentFault

时间:2023-01-24 18:43:11 352浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《golang中这段代码在print时,为何会输出Error()方法的执行结果》,主要介绍了go,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

package main

import (
    "fmt"
    "strconv"
)

//ErrNegativeSqrt is alias of float64
type ErrNegativeSqrt float64

//String return the value of string
func (e ErrNegativeSqrt) String() string {
    return strconv.FormatFloat(float64(e), 'g', 10, 64) + " is the result"
}

func (e ErrNegativeSqrt) Error() string {
    return fmt.Sprint(float64(e), " occurs the error")
}

func main() {
    var a ErrNegativeSqrt = 2
    fmt.Println(a)
}

为什么这段代码会输出 Error() 方法的结果?当把Error()方法删除后,就会输出String()方法的结果?

正确答案

摘抄一段print.go中的代码,也许是你想要的答案?

// Is it an error or Stringer?
// The duplication in the bodies is necessary:
// setting handled and deferring catchPanic
// must happen before calling the method.
switch v := p.arg.(type) {
case error:
    handled = true
    defer p.catchPanic(p.arg, verb)
    p.fmtString(v.Error(), verb)
    return

case Stringer:
    handled = true
    defer p.catchPanic(p.arg, verb)
    p.fmtString(v.String(), verb)
    return
}

以上就是《golang中这段代码在print时,为何会输出Error()方法的执行结果》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表