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

格式化布尔值

布尔值使用 %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

}

使用 # 修饰符可以切换格式,从而在输出时以 0 打头

+ 修饰符会强制输出正号,如果没有该修饰符,正整数输出时前面没有正号

十进制 %d 格式指令,唯一可用于当做填充的字符是空格和 0,但也可以使用自定义函数来填充

utf8.RuneCountInString() 函数返回给定字符串的字符数,这个数字永远小于或等于其字节数

strings.Repeat() 函数接受一个字符串和一个计数,返回一个将该字符串重复给定次数后产生的字符串

格式化字符

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

}

math。Modf() 函数将一个 float64 类型的整数部分和小数部分以 float64 类型的树的形式返回

%e、%E、%f、%g、%G 格式指令既可以用于复数,也可以用于浮点数

%e和%E是科学计算法格式(指数的)格式指令

格式化字符串和切片

Go语言默认是居右对齐,我们可以使用-修饰符来将其居左对齐

为调试格式化

%T(类型)格式指令用于打印一个内置的或者自定义值的类型,而 %v 格式指令则用于打印一个内置值的值

Go语言中有两种类型是同义的:uint8 和 byte,int32 和 rune

其他字符处理相关的包

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值