In Go sind Schnittstellen von grundlegender Bedeutung für die Förderung von Polymorphismus und Abstraktion. Sie fungieren als Verträge, die eine Reihe von Methoden festlegen, die ein Typ implementieren sollte, sodass verschiedene Typen einheitlich und flexibel behandelt werden können.
Schnittstellen
In Go ist eine Schnittstelle ein Typ, der eine Reihe von Methoden definiert, ohne sie zu implementieren. Es gibt nur die Signaturen der Methoden an, die ein Typ die Schnittstelle erfüllen muss. Auf diese Weise können verschiedene Typen einheitlich behandelt werden, solange sie die durch die Schnittstelle definierten Methoden implementieren. Schnittstellen fördern Polymorphismus und Abstraktion und erleichtern die Schaffung von flexiblen und wiederverwendbaren Code.
IO.Writer
Die IO.Writer -Schnittstelle ist eine der am häufigsten verwendeten in GO. Verschiedene Typen implementieren diese Schnittstelle, einschließlich OS.File, bytes.Buffer und net.Conn. Dadurch können verschiedene Arten von Schreibdestinationen einheitlich und flexibel behandelt werden.
// writer ist die interface, die die grundlegende schreibende operation zusammenfasst.
Geben Sie die Autor -Schnittstelle {ein
Schreiben (p [] byte) (n int, erral error)
}
// Writer é a interface que encapsula a operação básica de escrita.
type Writer interface {
Write(p []byte) (n int, err error)
}
N: Es ist die Anzahl der geschriebenen Bytes.
-
ERR: Es ist ein Fehlertypwert, der angibt, ob beim Schreiben Fehler auftreten.
-
- Jeder Typ, der die Schreibmethode mit dem richtigen Abonnement implementiert, wird als IO.Writer betrachtet.
Warum der.Writer IO.Writer?
Abstraktion
: Ermöglicht Sie, verschiedene Arten von Schreibdestinationen gleichmäßig zu behandeln.
Flexibilität
: Erleichtert die Erstellung generischer Methoden, die jede Art akzeptieren, die die IO.Writer -Schnittstelle implementiert.
-
codes reusse : Die Verwendung von io.writer kann mit verschiedenen Arten von Zielen wie Dateien, Sockets, Buffers usw. wiederverwendet werden
-
test : Ermöglicht Ihnen, Mocks und Stubs zu erstellen, um Code isoliert zu testen.
-
Beispiel
Paket main
importieren (
"Fmt"
"Du"
"io"
)
Func main () {
var w io.writer = os.stoutout // w ist vom IO.Writer -Typ
N, err: = w.write ([] byte ("Hallo, Welt!"))))
Wenn er! = nil {
fmt.println ("Fehler:", ähm)
}
fmt.printf ("\ bbytes Schriften: %b", n)
}
- /tmp ➜ rennen Sie example_io_writer.go
Hallo Welt!
Bytes Schriften: 1101
Abschluss
Die IO.Writer -Schnittstelle ist eine der häufigsten Schnittstellen in GO. Dies erleichtert die Wiederverwendung von Code, die Erstellung generischer Methoden und das Schreiben von Tests. Darüber hinaus fördert die IO.Writer -Schnittstelle das Polymorphismus, sodass verschiedene Typen, die die Schnittstelle implementieren, austauschbar verwendet werden. Es ist weithin in mehreren Standard -GO -Sprachpaketen wie den Bytes implementiert, unter anderem seine Vielseitigkeit und Bedeutung im GO -Ökosystem.
Referenzen
package main
import (
"fmt"
"os"
"io"
)
func main() {
var w io.Writer = os.Stdout // w é do tipo io.Writer
n, err := w.Write([]byte("Hello, World!"))
if err != nil {
fmt.Println("Erro:", err)
}
fmt.Printf("\bBytes escritos: %b", n)
}
https://pkg.go.dev/
[email protected]#file.writal*
https://pkg.go.dev/log/slog/internal/buffer#buffer.write**&&&]
https://pkg.go.dev/
[email protected]#conn*&&&]
/tmp ➜ go run example_io_writer.go
Hello, World!
Bytes escritos: 1101