Golang初始化描述了一種將方法附加到Go編程語(yǔ)言中的任意對(duì)象的方法。例如,它們顯示String了新定義ByteSize類(lèi)型的方法:type ByteSize float64const ( _ = iota; // ignore first value by assigning to blank identifier KB ByteSize = 1<<(10*iota); MB; GB; TB; PB; YB;)將諸如String之類(lèi)的方法附加到類(lèi)型的能力使得這些值可以自動(dòng)格式化自身以進(jìn)行打印,甚至可以將其作為常規(guī)類(lèi)型的一部分。func (b ByteSize) String() string { switch { case b >= YB: return fmt.Sprintf("%.2fYB", b/YB) case b >= PB: return fmt.Sprintf("%.2fPB", b/PB) case b >= TB: return fmt.Sprintf("%.2fTB", b/TB) case b >= GB: return fmt.Sprintf("%.2fGB", b/GB) case b >= MB: return fmt.Sprintf("%.2fMB", b/MB) case b >= KB: return fmt.Sprintf("%.2fKB", b/KB) } return fmt.Sprintf("%.2fB", b)}我不清楚以下內(nèi)容:如果ByteSize和func (b ByteSize) String() string都是在某個(gè)包中定義的,我會(huì)導(dǎo)入該包,但想ByteSize通過(guò)使用自己的字符串方法編寫(xiě)自定義顯示,Go如何知道是否調(diào)用自己的字符串方法或先前定義的字符串方法?甚至可以重新定義字符串嗎?
Go中的函數(shù)沖突
慕田峪7331174
2021-04-02 12:15:43