相关疑难解决方法(0)

为什么Error()优先于String()

我一直在浏览巡演,我无法弄清楚为什么会这样.

当你有一个Stringer(String() string)时,fmt将使用该方法打印到控制台.如https://tour.golang.org/methods/6中所述

但是,如果添加Error() string,则调用此方法而不是String() string.

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func (p *Person) String() string {
    return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}

func (p *Person) Error() string {
    return fmt.Sprintf("Failed")
}

func main() {
    a := &Person{"Arthur Dent", 42}
    z := &Person{"Zaphod Beeblebrox", 9001}
    fmt.Println(a, z)
}
Run Code Online (Sandbox Code Playgroud)

结果:

失败失败

我不明白为什么fmt.PrintlnError而不是String.

string go

2
推荐指数
1
解决办法
102
查看次数

标签 统计

go ×1

string ×1