add: summaries iface
This commit is contained in:
@ -17,3 +17,18 @@ func main() {
|
|||||||
l.discount(.5)
|
l.discount(.5)
|
||||||
l.print()
|
l.print()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Summary:
|
||||||
|
|
||||||
|
- Prefer to work directly with concrete types
|
||||||
|
- Leads to a simple and easy to understand code
|
||||||
|
- Abstractions (interfaces) can unnecessarily complicate your code
|
||||||
|
|
||||||
|
- Separating responsibilities is critical
|
||||||
|
- Timestamp type can represent, store, and print a UNIX timestamp
|
||||||
|
|
||||||
|
- When a type anonymously embeds a type, it can use the methods of the embedded type as its own.
|
||||||
|
- Timestamp embeds a time.Time
|
||||||
|
- So you can call the methods of the time.Time through a timestamp value
|
||||||
|
*/
|
||||||
|
@ -32,3 +32,17 @@ func main() {
|
|||||||
// var pocket money = 10
|
// var pocket money = 10
|
||||||
// fmt.Println("I have", pocket)
|
// fmt.Println("I have", pocket)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Summary:
|
||||||
|
|
||||||
|
- fmt.Stringer has one method: String()
|
||||||
|
- That returns a string.
|
||||||
|
- It is better to be an fmt.Stringer instead of printing directly.
|
||||||
|
|
||||||
|
- Implement the String() on a type and the type can represent itself as a string.
|
||||||
|
- Bonus: The functions in the fmt package can print your type.
|
||||||
|
- They use type assertion to detect if a type implements a String() method.
|
||||||
|
|
||||||
|
- strings.Builder can efficiently combine multiple string values.
|
||||||
|
*/
|
||||||
|
Reference in New Issue
Block a user