第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

圍棋之旅:了解縱梁練習(xí)

圍棋之旅:了解縱梁練習(xí)

Go
蕪湖不蕪 2022-07-25 11:24:33
我在縱梁上做這個練習(xí)。問題:使IPAddr類型實現(xiàn)fmt.Stringer將地址打印為虛線四邊形。例如,IPAddr{1, 2, 3, 4}應(yīng)該打印為"1.2.3.4".起始代碼:package mainimport "fmt"type IPAddr [4]byte// TODO: Add a "String() string" method to IPAddr.func main() {    hosts := map[string]IPAddr{        "loopback":  {127, 0, 0, 1},        "googleDNS": {8, 8, 8, 8},    }    for name, ip := range hosts {        fmt.Printf("%v: %v\n", name, ip)    }}這是我的代碼:func (addr IPAddr) String() string {    return fmt.Sprintf("%v.%v.%v.%v", addr[0], addr[1], addr[2], addr[3])}它奏效了!但我不明白為什么。我已經(jīng)收集到我不必顯式定義Stringer接口,因為它包含在 中fmt,但是main()我的代碼在函數(shù)中的哪個位置被使用?它是否會自動在IPAddr它找到的任何類型數(shù)據(jù)上運行它,這就是為什么在我不做任何事情的情況下修改地圖的原因?這是我的第一個基于編譯器的語言(我知道一些 Python 和 JavaScript),所以我不知道這個概念是否與其他語言相似。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經(jīng)驗 獲得超9個贊

main用于fmt.Printf打印IP地址,String()如果類型實現(xiàn)Stringer接口則使用方法。由于您聲明了String() string該類型的方法,因此IPAddr實現(xiàn)了Stringer接口。

您正在尋找的概念稱為“Duck Typing”。無需將類型聲明為實現(xiàn)接口。如果一個類型具有與接口相同的方法,則該類型實現(xiàn)該接口


查看完整回答
反對 回復(fù) 2022-07-25
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號