php小編小新在這篇文章中將介紹一個重要的注意事項(xiàng):在PHP中,不能使用”struct”作為類型。這是由于PHP語言本身的限制,不支持類似于C語言中的”struct”類型定義。在PHP中,我們可以使用類(class)來定義自定義的數(shù)據(jù)結(jié)構(gòu),以及相關(guān)的屬性和方法。通過使用類的方式,我們可以更靈活和強(qiáng)大地操作數(shù)據(jù),實(shí)現(xiàn)更復(fù)雜的邏輯和功能。因此,在編寫PHP代碼時,請記得避免使用”struct”作為類型定義,而是使用類來替代。這樣能夠更好地符合PHP語言的特性和規(guī)范,使代碼更易讀、易懂和易維護(hù)。
問題內(nèi)容
我有這個代碼:
type Iterable[T any] struct { Val T End T Next func() (bool, T) } func acceptStructWithNext[T any](r struct{ Next func() (bool, T) }) { fmt.Println(r) } func main() { iterable := Iterable[int]{ Val: 0, End: 100, Next: func() (bool, int) { return true, 0 }, } acceptStructWithNext[int](iterable) // error is here }
登錄后復(fù)制
我收到此編譯錯誤:
Cannot use 'iterable' (type Iterable[int]) as the type struct {...}
登錄后復(fù)制
我認(rèn)為結(jié)構(gòu)類型應(yīng)該允許這種類型的事情 – 我哪里出錯了?
解決方法
是的,但是 Go 沒有“結(jié)構(gòu)類型”。在某種程度上,結(jié)構(gòu)類型的好處可以通過接口的隱式滿足規(guī)則獲得。但這僅適用于界面。
請參閱https://www.php.cn/link/2a2f98d3597419498e4d734d8c2dd106
假設(shè) Go 會有像教科書一樣的結(jié)構(gòu)類型結(jié)構(gòu)類型。