首頁 >後端開發 >Golang >將值插入'type abc interface{}”

將值插入'type abc interface{}”

WBOY
WBOY轉載
2024-02-10 20:39:17774瀏覽

将值插入“type abc interface{}”

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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除