Próbuję przekonwertować bool
wywołanie isExist
na string
( true
lub false
) za pomocą, string(isExist)
ale to nie działa. Jaki jest idiomatyczny sposób na zrobienie tego w Go?
go
type-conversion
Kacper
źródło
źródło
strconv.FormatBool(t)
ustawićtrue
na „prawda”.strconv.ParseBool("true")
ustawić „prawda” natrue
. Zobacz stackoverflow.com/a/62740786/12817546 .Odpowiedzi:
użyj pakietu strconv
dokumenty
strconv.FormatBool(v)
źródło
Dwie główne opcje to:
strconv.FormatBool(bool) string
fmt.Sprintf(string, bool) string
z elementami formatującymi"%t"
lub"%v"
.Zwróć uwagę, że
strconv.FormatBool(...)
jest to znacznie szybsze niżfmt.Sprintf(...)
wykazano w następujących testach porównawczych: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" } }
Uruchom jako:
$ 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
źródło
możesz użyć w
strconv.FormatBool
ten sposób:package main import "fmt" import "strconv" func main() { isExist := true str := strconv.FormatBool(isExist) fmt.Println(str) //true fmt.Printf("%q\n", str) //"true" }
lub możesz użyć w
fmt.Sprint
ten sposób:package main import "fmt" func main() { isExist := true str := fmt.Sprint(isExist) fmt.Println(str) //true fmt.Printf("%q\n", str) //"true" }
lub napisz jak
strconv.FormatBool
:// FormatBool returns "true" or "false" according to the value of b func FormatBool(b bool) string { if b { return "true" } return "false" }
źródło
Po prostu użyj
fmt.Sprintf("%v", isExist)
, tak jak w przypadku prawie wszystkich typów.źródło