1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
這些是雜散字節(jié),如 、 等,以某些行為前綴。*%
雜散字節(jié)似乎是自定義流多路復(fù)用協(xié)議,允許并沿著同一連接發(fā)送。STDOUTSTDERR
使用解釋這些自定義標(biāo)頭和那些雜散字符,通過刪除每條數(shù)據(jù)的協(xié)議標(biāo)頭來避免。stdcopy.StdCopy()
參考: https://github.com/moby/moby/blob/master/pkg/stdcopy/stdcopy.go#L42
// Write sends the buffer to the underneath writer.
// It inserts the prefix header before the buffer,
// so stdcopy.StdCopy knows where to multiplex the output.
// It makes stdWriter to implement io.Writer.
所以,你的朋友是和使用Docker時(shí)的替代品和朋友。stdcopy.StdCopyio.Copy
一個(gè)示例,為您提供一個(gè)想法:
package main
import (
"bytes"
"fmt"
"io"
"strings"
)
var resp string = `
Content-Type: text/html
<html>
<head><title>HTML response</title></head>
<body><h1>Hello, Goodbye</h1></body>
</html>`
func main() {
src := strings.NewReader(resp)
dst := &bytes.Buffer{}
_, _ = io.Copy(dst, src)
fmt.Println(dst.String())
// Output:
//
// Content-Type: text/html
// <html>
// <head><title>HTML response</title></head>
// <body><h1>Hello, Goodbye</h1></body>
// </html>
}
簽名:AS有一個(gè)方法,因此它實(shí)現(xiàn)了接口并且它工作。func io.Copy(dst io.Writer, src io.Reader)dst(*bytes.Buffer)Writeio.Writer
現(xiàn)在,當(dāng)使用時(shí)使用相同的想法,因?yàn)楹灻窍嗤摹ttps://pkg.go.dev/github.com/docker/docker/pkg/stdcopy#StdCopystdcopy.StdCopy()
- 1 回答
- 0 關(guān)注
- 84 瀏覽
添加回答
舉報(bào)