I am trying to convert a bool called isExist to a string (true or false) by using string(isExist) but it does not work. What is the idiomatic way to do this in Go?

1

4 Answers

use the strconv package

docs

strconv.FormatBool(v)

func FormatBool(b bool) string FormatBool returns "true" or "false"
according to the value of b

0

The two main options are:

  1. strconv.FormatBool(bool) string
  2. fmt.Sprintf(string, bool) string with the "%t" or "%v" formatters.

Note that strconv.FormatBool(...) is considerably faster than fmt.Sprintf(...) as demonstrated by the following benchmarks:

func Benchmark_StrconvFormatBool(b *testing.B) { for i := 0; i < b.N; i++ { strconv.FormatBool(true) // => "true" strconv.FormatBool(false) // => "false" } } func Benchmark_FmtSprintfT(b *testing.B) { for i := 0; i < b.N; i++ { fmt.Sprintf("%t", true) // => "true" fmt.Sprintf("%t", false) // => "false" } } func Benchmark_FmtSprintfV(b *testing.B) { for i := 0; i < b.N; i++ { fmt.Sprintf("%v", true) // => "true" fmt.Sprintf("%v", false) // => "false" } } 

Run as:

$ go test -bench=. ./boolstr_test.go goos: darwin goarch: amd64 Benchmark_StrconvFormatBool-8 2000000000 0.30 ns/op Benchmark_FmtSprintfT-8 10000000 130 ns/op Benchmark_FmtSprintfV-8 10000000 130 ns/op PASS ok command-line-arguments 3.531s 

In efficiency is not too much of an issue, but genericity is, just use fmt.Sprintf("%v", isExist), as you would for almost all the types.

you may use strconv.FormatBool like this:

package main import "fmt" import "strconv" func main() { isExist := true str := strconv.FormatBool(isExist) fmt.Println(str) //true fmt.Printf("%q\n", str) //"true" } 

or you may use fmt.Sprint like this:

package main import "fmt" func main() { isExist := true str := fmt.Sprint(isExist) fmt.Println(str) //true fmt.Printf("%q\n", str) //"true" } 

or write like strconv.FormatBool:

// FormatBool returns "true" or "false" according to the value of b func FormatBool(b bool) string { if b { return "true" } return "false" } 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy