Go語言可以說是獨樹一幟,它採取了比較有趣的語法來表現物件
將資料與方法分離,類似於C語言
可以看出其結構的簡潔
事實上你可以看做第一個參數為Foo指標的函數,只是Go有語法糖可以讓我們用 . 運算子存取方法
有趣的地方在於你還可以接收Foo型別而非Foo指標型別,如此一來便會複製呼叫物件後執行函數,但這通常並非常見作法,沒有理由時請用指標
而struct的建構有一個特點,如果指定名稱,則剩餘欄位將自動補零值(Go對此做盡可能保證)
因此標準風格也建議總是指定名稱
這就是所謂的指定名稱
!注意跨行必須有逗號o
Go有所謂的interface,這是一種特殊的型別,它接受實作它的型別作為右值
而所謂的實作就只需要寫一個一樣的方法
Foo有實作此介面,就是這麼簡單
值得注意的是,Go語言的新手往往習慣性的宣告struct與interface
但其實這是不需要的
因為Go接受類似C的匿名struct,而interface亦同(也可以說臨時struct,端看你習慣的稱呼)
重要的是,往往該結構只使用一次而已,宣告全新的型別是污染命名空間,尤其在測試程式中經常遇到此種清況
簡而言之,Go提供了一個異於傳統的設計思維,如何取捨就看你的智慧了
沒有留言:
張貼留言