Translated function: learnInterfaces()

This commit is contained in:
Joseph Adams 2014-06-01 16:48:58 +02:00
parent 67e28c96b9
commit 5a174230a3

View File

@ -190,37 +190,37 @@ love:
learnInterfaces() // Jetzt zum interessanten Teil! learnInterfaces() // Jetzt zum interessanten Teil!
} }
// Define Stringer as an interface type with one method, String. // Definiere "Stringer" als ein Interface mit einer Methode: String
type Stringer interface { type Stringer interface {
String() string String() string
} }
// Define pair as a struct with two fields, ints named x and y. // Definiere ein Paar als struct mit zwei Feldern, Integers mit Namen x & y.
type pair struct { type pair struct {
x, y int x, y int
} }
// Define a method on type pair. Pair now implements Stringer. // Definiere eine Methode von "pair". Dieser Typ erfüllt jetzt das Stringer interface.
func (p pair) String() string { // p is called the "receiver" func (p pair) String() string { // p ist der Empfänger
// Sprintf is another public function in package fmt. // Sprintf ist eine weitere öffentliche Funktion von fmt.
// Dot syntax references fields of p. // Der Syntax mit Punkt greift auf die Felder zu.
return fmt.Sprintf("(%d, %d)", p.x, p.y) return fmt.Sprintf("(%d, %d)", p.x, p.y)
} }
func learnInterfaces() { func learnInterfaces() {
// Brace syntax is a "struct literal." It evaluates to an initialized // Der Klammer-Syntax ist ein "struct literal". Es ist ein vollkommen
// struct. The := syntax declares and initializes p to this struct. // initialisiertes struct. Der := Syntax deklariert und initialisiert p.
p := pair{3, 4} p := pair{3, 4}
fmt.Println(p.String()) // call String method of p, of type pair. fmt.Println(p.String()) // Aufruf der String() Methode von p.
var i Stringer // declare i of interface type Stringer. var i Stringer // Deklariere i vom Typ: Stringer
i = p // valid because pair implements Stringer i = p // Ok, weil p auch vom Typ Stringer ist.
// Call String method of i, of type Stringer. Output same as above. // Aufruf der String Methode von i, gleiche Ausgabe wie zuvor.
fmt.Println(i.String()) fmt.Println(i.String())
// Functions in the fmt package call the String method to ask an object // Funktionen des fmt-Packets rufen die String() Methode auf um eine
// for a printable representation of itself. // druckbare variante des Empfängers zu erhalten.
fmt.Println(p) // output same as above. Println calls String method. fmt.Println(p) // gleiche Ausgabe wie zuvor
fmt.Println(i) // output same as above fmt.Println(i) // und wieder die gleiche Ausgabe wie zuvor
learnErrorHandling() learnErrorHandling()
} }