गो में बूल को स्ट्रिंग में कैसे बदलें?


93

मैं एक का उपयोग करके ( या ) को boolबुलाया कन्वर्ट करने की कोशिश कर रहा हूँ, लेकिन यह काम नहीं करता है। गो में ऐसा करने का मुहावरेदार तरीका क्या है?isExiststringtruefalsestring(isExist)


strconv.FormatBool(t)true"सच" पर सेट करें। strconv.ParseBool("true")"सच" सेट करने के लिए trueStackoverflow.com/a/62740786/12817546 देखें ।
टॉम एल

जवाबों:


164

strconv पैकेज का उपयोग करें

डॉक्स

strconv.FormatBool(v)

func FormatBool (b bool) string FormatBool
b के मान के अनुसार "सही" या "गलत" रिटर्न देता है


24

दो मुख्य विकल्प हैं:

  1. strconv.FormatBool(bool) string
  2. fmt.Sprintf(string, bool) stringसाथ "%t"या "%v"formatters।

ध्यान दें कि strconv.FormatBool(...)है काफी की तुलना में तेजी fmt.Sprintf(...)निम्नलिखित बेंचमार्क द्वारा प्रदर्शित होता है:

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"
  }
}

ऐसे दोड़ो:

$ 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

9

आप strconv.FormatBoolइस तरह का उपयोग कर सकते हैं :

package main

import "fmt"
import "strconv"

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

या आप fmt.Sprintइस तरह का उपयोग कर सकते हैं :

package main

import "fmt"

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

या लिखें strconv.FormatBool:

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

9

बस उपयोग करें fmt.Sprintf("%v", isExist), जैसा कि आप लगभग सभी प्रकार के लिए करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.