「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > インターフェイス書き込み

インターフェイス書き込み

2025-02-06に投稿しました
ブラウズ:451

A interface Write

in goでは、インターフェイスは多型と抽象化を促進するための基本です。それらは、タイプが実装する一連のメソッドを指定する契約として機能し、異なるタイプを均一かつ柔軟に扱うことができます。

インターフェイス

goでは、インターフェイスは、それらを実装せずに一連のメソッドを定義するタイプです。タイプがインターフェイスを満たす必要があるというメソッドの署名のみを指定します。これにより、インターフェイスによって定義された方法を実装する限り、さまざまなタイプを均一に処理できます。インターフェイスは、柔軟で再利用可能なコードの作成を促進し、多型と抽象化を促進します。

io.writer

io.writerインターフェイスは、goで最も使用されているものの1つであり、バイト([]バイト)からブライトを受信し、整数(int)とエラー(エラー)を返します。 os.file、bytes.buffer、net.connなど、いくつかのタイプがこのインターフェイスを実装します。これにより、さまざまな種類のライティング先を均一かつ柔軟に扱うことができます。

//ライターは、基本的なライティング操作をカプセル化するインターフェイスです。 タイプライターインターフェイス{ 書き込み(p [] byte)(n int、errエラー) }

// Writer é a interface que encapsula a operação básica de escrita.
type Writer interface {
    Write(p []byte) (n int, err error)
}
    N:書かれたバイトの数です。
  • ERR:それは、書き込み中にエラーが発生するかどうかを示すエラータイプの値です。
    • 正しいサブスクリプションで書き込み方法を実装する任意のタイプは、io.writerと見なされます。
    • なぜ。writerio.writer?

abstraction

:さまざまなタイプのライティング目的地を均等に扱うことができます。

柔軟性
    :io.writerインターフェイスを実装するあらゆる種類を受け入れる一般的な方法の作成を促進します。
  • code reuse :io.writerを使用することは、ファイル、ソケット、バフファーなど、さまざまな種類の目的地で再利用できます。
  • test :モックとスタブを作成して、をテストすることができます。
  • パッケージMain 輸入 ( 「FMT」 "あなた" 「IO」 )) func main(){ var w io.writer = os.stout // wはio.writerタイプです n、err:= w.write([] byte( "hello、world!")))) エラーの場合! fmt.println( "error:"、err) } fmt.printf( "\ bbytes著作:%b"、n) }
  • /tmp➜example_io_writer.goを実行 こんにちは世界! バイトの著作:1101 結論
io.Writerインターフェイスは、GOで最も一般的なインターフェイスの1つであり、さまざまなタイプのライティング目的地を均一に扱うことができます。これにより、コードの再利用、一般的な方法の作成、テストの書き込みが容易になります。さらに、IO.Writerインターフェイスは多型を促進し、インターフェイスを実装するさまざまなタイプを交換可能に使用できます。これは、特にバイト、ネットなど、いくつかの標準的なGO言語パッケージに広く実装されており、GOエコシステムにおける汎用性と重要性を示しています。

参照

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
リリースステートメント この記事は、https://dev.to/fabianoflorentino/a-interface-write-11c5?1に再現されています。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3