源码 WriteString unsafeheader.Slice
src\os\file.go
// WriteString is like Write, but writes the contents of string s rather than // a slice of bytes. func (f *File) WriteString(s string) (n int, err error) { var b []byte hdr := (*unsafeheader.Slice)(unsafe.Pointer(&b)) hdr.Data = (*unsafeheader.String)(unsafe.Pointer(&s)).Data hdr.Cap = len(s) hdr.Len = len(s) return f.Write(b) } // Write writes len(b) bytes from b to the File. // It returns the number of bytes written and an error, if any. // Write returns a non-nil error when n != len(b). func (f *File) Write(b []byte) (n int, err error) { if err := f.checkValid("write"); err != nil { return 0, err } n, e := f.write(b) if n < 0 { n = 0 } if n != len(b) { err = io.ErrShortWrite }epipecheck(f, e)
if e != nil { err = f.wrapErr("write", e) }
return n, err }