Go-MySQL-DriverでカスタムのDialをサポートしていたり圧縮プロトコルサポートのコードをレビューしていたりして、利用している Write() の実装が多様化してきたので、「Write(p)って Read(p)みたいに n が len(p) より小さい場合にループで続きを書き込まなくてい良いのは決まりがあったっけ?」と気になって確認してみました。 まず、 net.Conn の定義ではReadとWriteは次のようになっています。 // https://pkg.go.dev/net#Conn type Conn interface { // Read reads data from the connection. // Read can be made to time out and return an error after a fixed // time limit; see