2017-08-11 30 views
-8

我已經看到了這樣的定義有的去功能:Go前的函數名稱前的參數?

type poly struct { 
    coeffs [256]uint16 
} 

func (p *poly) reset() { 
    for i := range p.coeffs { 
     p.coeffs[i] = 0 
    } 
} 

,你可以再打爲:

var p poly 
p.reset() 

我還沒有看到這一點,我知道其他編程語言。 p *poly在復位功能中的用途是什麼?它看起來像一個函數參數,但寫在函數名稱之前。任何澄清它?

+4

閱讀golang之旅https://tour.golang.org/methods/1會給你一個洞見你的問題。 – jeevatkm

+0

當你理解事物的時候,你也應該知道可尋址性以及如何調用方法,這可以讓你理解「poly」值何時能夠或者不能被轉換爲「poly」值。這很重要,因爲當您使用'p.reset()'時,'poly'reset'需要'* poly'接收器,其中'p'具有類型'poly',而不是'* poly'。 –

回答

5

這意味着reset()*poly上的一種方法。這是非常基本的Go;你真的需要從Go tour開始。試圖在沒有對其語法的基本理解的情況下閱讀Go會非常困惑。

+0

我找不到任何地方,在函數名前面使用'p * poly'而不是括號內的函數有什麼好處。另外什麼時候用哪個? – typos

+2

好處是它使它成爲一種方法。你是否瀏覽了整個旅程(不僅僅是瀏覽前5頁)?大多數人在幾天內學習Go語法(理解Go語言需要更長的時間,但語法非常簡單)。你不能假設它是JavaScript/Java/Swift /等。換句話說。這是完全不同的語言。 –

+1

正如jeevatkm所指出的那樣,涵蓋方法的具體部分是https://tour.golang.org/methods/1,但從旅程開始時開始。 –