簡體   English   中英

為什么fmt.Println結構體不使用其成員的String()方法

[英]Why fmt.Println a struct does not use String() method of it's members

package main

import (
    "fmt"
)

type bar struct {
}

func (b bar) String() string {
    return "bar"
}

type foo struct {
    b []*bar
    bb *bar
}

func main() {
    f := foo{b: []*bar{&bar{}}, bb:&bar{}}
    fmt.Println(f, f.b, f.bb)
}

為什么結果是

{[0x176f44] 0x176f44} [bar]條

{[bar] bar} [bar]條

背后有什么原因嗎? 它似乎易於實現並且易於閱讀。

您的代碼中有幾個問題。 您在未導出的bar上定義Stirng ,您的字段也未導出。 這有效:

type Bar struct {
}

func (b Bar) String() string {
    return "bar"
}

type foo struct {
    B  []Bar
    BB Bar
}

func main() {
    f := foo{B: []Bar{Bar{}}, BB: Bar{}}
    fmt.Println(f)
}

游樂場: https : //play.golang.org/p/OhoIcB7cA3

這也可以與*Bar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM