.Close
method GO-S2307433 if err != nil {
434 return err
435 }
436 defer certOut.Close()437
438 if _, err := certOut.Write(getServerCA(server)); err != nil {
439 return err
95 if err != nil {
96 return err
97 }
98 defer output.Close() 99
100 return kubeconfigTemplate.Execute(output, &data)
101}
272 if err != nil {
273 return false
274 }
275 defer file.Close()276
277 nameserver := regexp.MustCompile(`^nameserver\s+([^\s]*)`)
278 scanner := bufio.NewScanner(file)
128 if err != nil {
129 return nil, err
130 }
131 defer resp.Body.Close()132 }
133 }
134
116 if err != nil {
117 return nil, err
118 }
119 defer resp.Body.Close()120
121 // If we got a 401 Unauthorized response when using client certs, try again without client cert auth.
122 // This allows us to fall back from node identity to token when the node resource is deleted.
Calling Close()
method may return an error, and ignoring the same
might result in a data loss. This is similar to many more Close
methods.
For example, on POSIX systems, os.Close
uses the close
system call underneath,
which may return an EIO
:
A previously-uncommitted write(2) encountered an input/output error.
This means that the data written by os.Write
hasn't been written to the disk,
which results in a data loss. It is recommended to handle the error returned
by the os.Close
call or call os.Sync
if available to force the OS to write
the data to the disk.
package main
import (
"fmt"
"os"
)
func foo() error {
f, err := os.Create("/tmp/test.txt")
if err != nil {
return err
}
defer f.Close()
return fmt.Fprint(f, "Hello World")
}
package main
import (
"fmt"
"os"
)
func foo() error {
f, err := os.Create("/tmp/test.txt")
if err != nil {
return err
}
err = fmt.Fprint(f, "Hello World")
if err != nil {
return err
}
return f.Close()
}
package main
import (
"fmt"
"os"
)
func foo() error {
f, err := os.Create("/tmp/test.txt")
if err != nil {
return err
}
defer f.Close()
err = fmt.Fprint(f, "Hello World")
if err != nil {
return err
}
return f.Sync()
}