源码 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
}
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号