Skip to content

Commit 0c101bf

Browse files
authored
Merge pull request #697 from devlights:add-stringer-and-gostringer
Add examples/basic/formatting/stringer_and_gostringer.go
2 parents b9855d2 + b6a6699 commit 0c101bf

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

examples/basic/formatting/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111
|appendf.go|formatting\_appendf|Go 1.19 から追加された fmt.Appendf() のサンプルです|
1212
|appendln.go|formatting\_appendln|Go 1.19 から追加された fmt.Appendln() のサンプルです|
1313
|padding\_arbitarylength.go|formatting\_padding\_arbitarylength|文字列をパディングする際の桁数を外から指定するサンプルです|
14+
|stringer\_and\_gostringer.go|formatting\_stringer\_and\_gostringer|fmt.Stringerとfmt.GoStringerについてのサンプルです|

examples/basic/formatting/examples.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ func (r *register) Regist(m mapping.ExampleMapping) {
2121
m["formatting_appendln"] = AppendLn
2222
m["formatting_padding_arbitary_length"] = PaddingArbitaryLength
2323
m["formatting_numbers"] = Numbers
24+
m["formatting_stringer_and_gostringer"] = StringerAndGoStringer
2425
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package formatting
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"strconv"
7+
)
8+
9+
type _MyInt int
10+
11+
func (me _MyInt) String() string {
12+
return fmt.Sprintf("stringer: %d", me)
13+
}
14+
15+
func (me _MyInt) GoString() string {
16+
return fmt.Sprintf("gostring: %d", me)
17+
}
18+
19+
// StringerAndGoStringer は、fmt.Stringerとfmt.GoStringerについてのサンプルです.
20+
//
21+
// # REFERENCES
22+
// - https://pkg.go.dev/fmt@go1.21.4#Stringer
23+
// - https://pkg.go.dev/fmt@go1.21.4#GoStringer
24+
func StringerAndGoStringer() error {
25+
//
26+
// fmt.Stringer と fmt.GoStringer の違い
27+
//
28+
// どちらも文字列表現のためのインターフェースであるが
29+
// fmt.GoStringerの方は GoString() を呼ばれた場合に発動する.
30+
// これは、fmt.Printf などで %#v を利用してフォーマットしようとする際に使われる
31+
//
32+
33+
var (
34+
i = _MyInt(100)
35+
s = strconv.Itoa((int)(i))
36+
b, _ = json.Marshal(i)
37+
)
38+
39+
fmt.Printf("v: %v\t+v: %+v\t#v: %#v\tjson: %s\ts: %s", i, i, i, b, s)
40+
41+
return nil
42+
}

0 commit comments

Comments
 (0)