回答

收藏

Golang 可以像 Python 那样乘以字符串吗?

技术问答 技术问答 462 人阅读 | 0 人回复 | 2023-09-11

Python 可以这样串乘字符:; E; y9 n$ t$ Z8 A# V
    Python 3.4.3 (default,Mar 26 2015年22:03:40[GCC 4.9.2] on linuxType "help","copyright","credits" or "license" for more information.>>> x = 'my new text is this long'>>> y = '#' * len(x)>>> y'########################'>>>7 p1 U: y8 d! a% \% U6 _, f' u+ }
Golang 能以某种方式做同样的事吗?
4 T) I' |/ ]: N" h  A                                                                ( P# z5 b$ ~9 ~. A' u4 Y
    解决方案:                                                               
& Y1 ?; W1 r. N                                                                它有一个函数是运算符,strings.Repeat。这是您的 Python 示例端口,您可以在这里操作:
; O( s( W5 u( Q8 _9 [
    package mainimport  "fmt"    "strings"    "unicode/utf8")func main()      x := "my new text is this long"    y := strings.Repeat("#",utf8.RuneCountInString(x))    fmt.Println(x)    fmt.Println(y)}! B& j+ \' U+ n! k2 \; D& l+ M
请注意,我用了utf8.RuneCountInString(x)而不是len(x); 前者计算符文(Unicode 代码点),后者计算字节。"my new text is this long",差异并不重要,因为所有的字符都只有一个字节,但养成指定你意思的习惯是很好的:. P6 s  H6 x3 y4 S2 w9 Q, i; J3 l
    len("ā") //=> 2utf8.RuneCountInString("ā") //=> 1, v9 ?: L0 E) s" M: _8 _! S$ I
因为这是 Python 比较问题,请注意 Python 中,one 函数len根据您调用的内容计算不同的内容。Python 2 中,纯字符串上的字节数和 Unicode 字符串上的符文 ( u'...'):
2 H) w0 @( P4 E$ Y: {2 j8 h$ f& J) f
    Python 2.7.18 (default,Aug 15 2020年17:03:20>>> len('ā') #=> 2>>> len(u'ā') #=> 17 j# W( ]; K  ?* j
而在现代 Python 中,纯字符串是Unicode 字符串:8 E1 r# x& i" P8 ?6 m- B* H
    Python 3.9.6 (default,Jun 29 2021,19:36:19>>> len('ā') #=> 1
    0 f" H8 R- H) B: ^- _9 a
要计算字节数,需要计算字节数bytearray先将字符串编码成一个:
5 ^/ G+ J" G! Y: _
    >>> len('ā'.encode('UTF-8')) #=> 2
    $ @2 {3 z9 V1 z
所以Python为了获得它们的长度,有多种类型的字符串和函数;Go 只有一个字符串,但你必须选择与你想要的语义相匹配的长度函数。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则