How can I read a whole file into a string variable

file, go, string

Solution

Edit: the `ioutil` package is now deprecated: "Deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code. See the specific function documentation for details." Because of Go's compatibility promise, `ioutil.ReadMe` is safe, but @openwonk's updated answer is better for new code.

Old answer:

Use `ioutil.ReadFile`:

func ReadFile(filename string) ([]byte, error)

ReadFile reads the file named by filename and returns the contents. A successful call returns err == nil, not err == EOF. Because ReadFile reads the whole file, it does not treat an EOF from Read as an error to be reported.

You will get a `[]byte` instead of a `string`. It can be converted if really necessary:

s := string(buf)

Problem

I have lots of small files, I don't want to read them line by line. Is there a function in Go that will read a whole file into a string variable?

Original source