refactor: common ifaces
This commit is contained in:
46
interfaces/_old/09-stringer/_handlemethods.go
Normal file
46
interfaces/_old/09-stringer/_handlemethods.go
Normal file
@ -0,0 +1,46 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
// In the depths of the Go standard library's fmt package...
|
||||
// Printing functions use the handleMethods method.
|
||||
|
||||
// Example:
|
||||
// var pocket money = 10
|
||||
// fmt.Println(pocket)
|
||||
|
||||
// the argument can be any type of value
|
||||
// stores the pocket variable in the argument variable
|
||||
// ^
|
||||
// |
|
||||
func (p *pp) handleMethods(argument interface{}) (handled bool) {
|
||||
// ...
|
||||
|
||||
// Checks whether a given argument is an error or an fmt.Stringer
|
||||
switch v := argument.(type) {
|
||||
// ...
|
||||
// If the argument is a Stringer, calls its String() method
|
||||
case Stringer:
|
||||
// ...
|
||||
// pocket.String()
|
||||
// ^
|
||||
// |
|
||||
p.fmtString(v.String(), verb)
|
||||
return
|
||||
}
|
||||
|
||||
// ...
|
||||
}
|
||||
|
||||
/*
|
||||
The original `handleMethods` code is more involved:
|
||||
|
||||
https://github.com/golang/go/blob/6f51082da77a1d4cafd5b7af0db69293943f4066/src/fmt/print.go#L574
|
||||
|
||||
-> 574#handleMethods(..)
|
||||
-> 627#Stringer type check: If `v` is a Stringer, run:
|
||||
-> 630#v.String()
|
||||
*/
|
Reference in New Issue
Block a user