Sisipkan nilai ke dalam 'antara muka jenis abc{}'

WBOY
Lepaskan: 2024-02-10 20:39:17
ke hadapan
725 orang telah melayarinya

将值插入“type abc interface{}”

Editor PHP Xiaoxin berada di sini untuk memperkenalkan kepada anda kaedah memasukkan nilai ke dalam "antara muka jenis abc{}". Dalam PHP, kami sering menggunakan antara muka untuk menentukan set spesifikasi. Kadangkala, kita menghadapi situasi di mana kita perlu menentukan nilai lalai dalam antara muka. Pada masa ini, kita boleh menggunakan ciri (ciri) untuk mencapai fungsi ini. Ciri ialah sekeping kod yang boleh dikongsi oleh berbilang kelas Dengan menggunakan ciri, kita boleh menentukan nilai lalai dalam antara muka dan menggunakannya dalam kelas. Kaedah ini mudah dan mudah difahami, mari kita lihat langkah-langkah pelaksanaan khusus!

Kandungan soalan

Saya cuba memasukkan nilai ke dalam type abc [][] 接口{}

Saya mencuba ini:

insert := &abc{{0, {"abc", "def"}}}

Ini menimbulkan ralat: 无效的复合文字类型:接口{}

Saya juga mencuba ini:

insert, _ := json.Marshal([][]interface{}{{0, {"abc", "def"}}})

Tetapi ini juga menimbulkan ralat Invalid Composite Literal Type: interface{}

Saya mahu output adalah seperti berikut:

[ [ 0, [ "abc", "def" ] ]

Bolehkah anda beritahu saya di mana silap saya dan cara untuk membetulkannya?

PELUASAN

abc 的类型允许任何类型,但是需要定义您放入其中的内容的类型。您没有定义 {"abc", "def"} jenis, dan literal antara muka tidak boleh dijadikan instantiated (antara muka tidak memberitahu pengkompil apa-apa tentang medan). Anda boleh mempunyai struct tanpa nama, tetapi anda masih perlu menentukannya.

Mari jalani perkara yang anda ada dengan contoh:

x := &abc{}
Salin selepas log masuk

Buat tatasusunan luar dengan entri sifar.

x := &abc{{}, {}, {}}
Salin selepas log masuk

Buat tatasusunan luar menggunakan 3 tatasusunan dalaman kosong.

x := &abc{{0, "abc"}}
Salin selepas log masuk

Tatasusunan luar dengan tatasusunan dalam dengan 2 nilai: 0"abc".

x := &abc{{0, {"abc", "def"}}
Salin selepas log masuk

Suatu tatasusunan luar dengan tatasusunan dalam dengan 2 nilai: 0 和......什么?这是一个对象字面量,但没有显式类型,也没有语法上正确的隐式类型(隐式地期望 interface{} , tidak boleh instantiated secara langsung), ini adalah ralat.

type pairofstrings struct {
  a string
  b string
}

x := &abc{{0, pairofstrings{"abc", "def"}}}
Salin selepas log masuk

Anda kini telah memasuki struktur yang dimaksudkan.

x := &abc{{0, struct {
  a string
  b string
}{"abc", "def"}}}
Salin selepas log masuk

Struktur tanpa nama juga merupakan pendekatan yang jelek tetapi berkesan.

x := &abc{{0, []string{"abc", "def"}}}
Salin selepas log masuk

nampaknya perkara yang paling hampir dengan apa yang anda mahukan.

Peraturan adalah interface{} 可以保存任何定义的东西。它不等同于 c# 的 dynamic objek.

Atas ialah kandungan terperinci Sisipkan nilai ke dalam 'antara muka jenis abc{}'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!