Go 语言程序设计——字符串类型(2)

2019-05-05  本文已影响0人  hlemon

格式化布尔值

布尔值使用 %t (真值) 格式指令来输出
例子:

package main

import (
    "fmt"
)

func IntForBool (b bool) int {
    if b {
        return 1
    }
    return 0
}

func main() {
    fmt.Printf("%t %t\n", true, false)
    fmt.Printf("%d %d\n", IntForBool(true), IntForBool(false))
}

也可以使用 strconv.ParseBool() 函数来将字符串转化为布尔值

格式化整数

例子:

package main

import (
    "fmt"
    "unicode/utf8"
    "strings"
)

func main() {
    i := 3931
    fmt.Printf("|%b|%9b|%-9b|%09b|% 9b|\n", 37, 37, 37, 37, 37)
    fmt.Printf("|%o|%#o|%# 8o|%#+ 8o|%+08o|\n", 41, 41, 41, 41, -41)
    fmt.Printf("|%x|%X|%8x|%08x|%#04X|0x%04X|\n", i, i, i, i, i, i)
    fmt.Printf("|$%d|$%06d|$%+06d|$%s|\n", i, i, i, Pad(i, 6, '*'))
}

func Pad(number, width int, pad rune) string {
    s := fmt.Sprint(number)
    gap := width - utf8.RuneCountInString(s)
    if gap > 0 {
        return strings.Repeat(string(pad), gap) + s
    }
    return s
}

格式化字符

Go 语言的字符都是 rune(既 int32 值),它可以已数字或者 Unicode 字符的形式输出

格式化浮点数

浮点数格式可以指定整体长度、小数位数,以及使用标准计数法还是科学计数法
例子:

package main

import (
    "fmt"
    "unicode/utf8"
    "strings"
    "math"
)

func main() {
    for _, x := range []float64{-.258, 7194.84, -60897162.0218, 1.500089e-8} {
        fmt.Printf("|%20.5e|%20.5f|%s|\n", x, x, Humanize(x, 20, 5, '*', ','))
    }
}

func Humanize(amount float64, width, decimals int, pad, separator rune) string {
    dollars, cents := math.Modf(amount)
    whole := fmt.Sprint("%+.0f", dollars)[1:]
    fraction := ""
    if decimals > 0 {
        fraction = fmt.Sprintf("%+.*f", decimals, cents)[2:]
    }
    sep := string(separator)
    for i := len(whole) - 3; i > 0; i -= 3 {
        whole = whole[:i] + sep + whole[i:]
    }
    if amount < 0.0 {
        whole = "-" + whole
    }
    number := whole + fraction
    gap := width - utf8.RuneCountInString(number)
    if gap > 0 {
        return strings.Repeat(string(pad), gap) + number
    }
    return number
}

格式化字符串和切片

为调试格式化

其他字符处理相关的包

Go语言处理字符串的强大之处不仅限于对索引和切片的支持,也不限于fmt的格式化功能,strings包提供了非常强大的功能,此外strconv、unicode/utf8、unicode等也提供了大量实用的函数

上一篇下一篇

猜你喜欢

热点阅读