php小編小新在這裡跟大家介紹一種將值插入"type abc interface{}"的方法。在php中,我們常常會使用介面(interface)來定義一組規格。有時候,我們會遇到需要在介面中定義一個預設值的情況。這時候,我們可以使用trait(特性)來實現這個功能。 trait是一種可以被多個類別共享的程式碼片段,透過使用trait,我們可以在介面中定義預設值並在類別中使用。這種方法簡單易懂,讓我們來看看具體的實作步驟吧!
我正在嘗試將值插入 type abc [][] 介面{}
#我嘗試過這個:
insert := &abc{{0, {"abc", "def"}}}
這會引發錯誤:無效的複合文字類型:介面{}
#我也嘗試過這個:
insert, _ := json.Marshal([][]interface{}{{0, {"abc", "def"}}})
但這也會引發錯誤 Invalid Composite Literal Type: interface{}
#我希望輸出如下:
[ [ 0, [ "abc", "def" ] ]
你能讓我知道我哪裡出了問題以及如何解決這個問題嗎?
abc
的類型允許任何類型,但是需要定義您放入其中的內容的類型。您沒有定義 {"abc", "def"}
的類型,也無法實例化介面文字(介面不會告訴編譯器有關欄位的任何資訊)。您可以擁有匿名結構,但仍然需要定義它們。
讓我們透過範例逐步了解您所擁有的內容:
x := &abc{}
建立具有零條目的外部陣列。
x := &abc{{}, {}, {}}
使用 3 個空的內部陣列建立外部陣列。
x := &abc{{0, "abc"}}
一個外部數組,有一個內部數組,有 2 個值:0
和 "abc"
。
x := &abc{{0, {"abc", "def"}}
一個外部數組,帶有一個內部數組,有 2 個值:0
和......什麼?這是一個物件字面量,但沒有明確類型,也沒有語法上正確的隱式類型(隱式地期望 interface{}
,無法直接實例化),這是一個錯誤。
type pairofstrings struct { a string b string } x := &abc{{0, pairofstrings{"abc", "def"}}}
您現在已經輸入了有問題的結構。
x := &abc{{0, struct { a string b string }{"abc", "def"}}}
匿名結構也是一種醜陋但有效的方法。
x := &abc{{0, []string{"abc", "def"}}}
似乎是最接近你想要的東西。
規則是 interface{}
可以儲存任何定義的東西。它不等同於 c# 的 dynamic
物件。
以上是將值插入'type abc interface{}”的詳細內容。更多資訊請關注PHP中文網其他相關文章!