Tôi đang cố gắng chuyển đổi một boolđược gọi isExistthành string( truehoặc false) bằng cách sử dụng string(isExist)nhưng nó không hoạt động. Cách thành ngữ để làm điều này trong cờ vây là gì?
Câu trả lời:
Hai tùy chọn chính là:
strconv.FormatBool(bool) stringfmt.Sprintf(string, bool) stringvới "%t"hoặc bộ "%v"định dạng.Lưu ý rằng strconv.FormatBool(...)là đáng kể nhanh hơn fmt.Sprintf(...), thể hiện qua các tiêu chuẩn sau đây:
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"
  }
}
Chạy như:
$ 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
bạn có thể sử dụng strconv.FormatBoolnhư thế này:  
package main
import "fmt"
import "strconv"
func main() {
    isExist := true
    str := strconv.FormatBool(isExist)
    fmt.Println(str)        //true
    fmt.Printf("%q\n", str) //"true"
}
hoặc bạn có thể sử dụng fmt.Sprintnhư thế này:  
package main
import "fmt"
func main() {
    isExist := true
    str := fmt.Sprint(isExist)
    fmt.Println(str)        //true
    fmt.Printf("%q\n", str) //"true"
}
hoặc viết như strconv.FormatBool:  
// FormatBool returns "true" or "false" according to the value of b
func FormatBool(b bool) string {
    if b {
        return "true"
    }
    return "false"
}
strconv.FormatBool(t)để đặttruethành "true".strconv.ParseBool("true")để đặt "true" thànhtrue. Xem stackoverflow.com/a/62740786/12817546 .