1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
要打印一個(gè)string
值,只需將其按原樣傳遞給fmt.Println()
:
str?:=?fact.String() fmt.Println(str)
另請(qǐng)注意,您不需要調(diào)用它的String()
方法,fmt
包會(huì)為您完成。但如果你只是傳遞fact
給它就不行,因?yàn)?code>Int.String()有指針接收器,所以你必須傳遞一個(gè)指針給它:
fmt.Println(&fact)
或者*big.Int
首先聲明并使用,然后您可以fact
簡(jiǎn)單地通過(guò)打?。?/p>
var fact = new(big.Int)
fact.MulRange(1, 100)
fmt.Println(fact)
事實(shí)上,因?yàn)樗械姆椒ǘ加?code>big.Int指針接收者,你應(yīng)該總是聲明和使用指針big.Int
以避免意外。
筆記:
您的原始代碼不會(huì)打印您想要的內(nèi)容,因?yàn)?code>for range在一個(gè)字符串上的范圍超過(guò)了它的符文(字符),并且rune
是的別名int32
,因此結(jié)果的字符將打印為單獨(dú)的數(shù)字,它們之間沒(méi)有空格(因?yàn)槟?code>fmt.Print()稱(chēng)呼)。
出于同樣的原因,要計(jì)算數(shù)字的總和,您必須將符文轉(zhuǎn)換為它們所代表的數(shù)字的數(shù)值。為此,您可以簡(jiǎn)單地使用digit - '0'
:
str := fact.String()
sum := 0
for _, val := range str {
? ? sum += int(val - '0')
}
fmt.Println(sum)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000648
- 1 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報(bào)