亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 可以像 Python 那樣乘以字符串嗎?

Golang 可以像 Python 那樣乘以字符串嗎?

Go
catspeake 2021-11-15 16:39:10
Python 可以像這樣將字符串相乘: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'########################'>>>Golang 能以某種方式做同樣的事情嗎?
查看完整描述

3 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

它有一個函數而不是一個運算符,strings.Repeat。這是您的 Python 示例的一個端口,您可以在此處運行:


package main


import (

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

}

請注意,我使用了utf8.RuneCountInString(x)而不是len(x); 前者計算“符文”(Unicode 代碼點),而后者計算字節。在 的情況下"my new text is this long",差異無關緊要,因為所有字符都只有一個字節,但是養成指定您的意思的習慣是很好的:


len("ā") //=> 2

utf8.RuneCountInString("ā") //=> 1

由于這是一個 Python 比較問題,請注意在 Python 中, one 函數len根據您調用它的內容計算不同的內容。在 Python 2 中,它計算普通字符串上的字節數和 Unicode 字符串上的符文 ( u'...'):


Python 2.7.18 (default, Aug 15 2020, 17:03:20)

>>> len('ā') #=> 2

>>> len(u'ā') #=> 1

而在現代 Python 中,純字符串是Unicode 字符串:


Python 3.9.6 (default, Jun 29 2021, 19:36:19) 

>>> len('ā') #=> 1

如果要計算字節數,則需要bytearray先將字符串編碼為一個:


>>> len('ā'.encode('UTF-8')) #=> 2

所以Python有多種類型的字符串和一個函數來獲取它們的長度;Go 只有一種字符串,但你必須選擇與你想要的語義匹配的長度函數。


查看完整回答
反對 回復 2021-11-15
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

是的,它可以,雖然不是使用運算符,而是使用標準庫中的函數。


使用簡單的循環會很容易,但標準庫為您提供了高度優化的版本:strings.Repeat().


你的例子:


x := "my new text is this long"

y := strings.Repeat("#", len(x))

fmt.Println(y)

在Go Playground上試一試。


注意:len(x)是字符串的“字節”長度(字節數)(在 UTF-8 編碼中,這是 Go 在內存中存儲字符串的方式)。如果您想要字符數(符文),請使用utf8.RuneCountInString().


查看完整回答
反對 回復 2021-11-15
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

是的。strings 包有一個Repeat函數


查看完整回答
反對 回復 2021-11-15
  • 3 回答
  • 0 關注
  • 391 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號