Buat jenis daripada slice
Saya mahu mencipta jenis data seperti tindanan. Saya mahu menambah dan mengalih keluar masukan "di bahagian atas" dan boleh mencetaknya. Dalam contoh ini, jenis xpath digunakan untuk melintasi dokumen xml dan menjejaki laluan semasa.
Jadi saya mencipta xpath[]jenis rentetan dan menulis fungsi yang sepadan, iaitu: push() pop() dan string().
Masalah saya ialah jenis itu hilang keadaannya, yang agak mengelirukan saya kerana saya fikir kepingan adalah jenis rujukan. Juga, jika saya cuba menukar fungsi kepada penerima penunjuk, saya mendapat beberapa ralat kompilasi. Untuk membetulkannya pada ketika ini, saya hanya menukar [] rentetan kepada struct dengan medan rentetan [] tunggal. Walaupun ia masih mengganggu saya bahawa saya tidak dapat membuatnya berfungsi dengan hanya menggunakan slice sebagai jenis asas.
Apakah pendekatan yang betul?
package main import ( "fmt" "strings" ) type xPath []string func (xp xPath) push(entry string) { xp = append(xp, entry) } func (xp xPath) String() string { sb := strings.Builder{} sb.WriteString("/") sb.WriteString(strings.Join(xp, "/")) return sb.String() } func main() { xp := xPath{} xp.push("rss") xp.push("channel") xp.push("items") fmt.Println(xp) // Output: / // Wanted: /rss/channel/items }
Jawapan betul
Fungsi tolak anda tidak melakukan apa-apa.
Fungsi tolak yang betul:
func (xp *xPath) push(entry string) { *xp = append(*xp, entry) }
Sepotong ialah jenis rujukan dalam situasi di mana anda ingin menukar nilainya (cth. menggunakan indeks).
Sebaliknya, jika anda ingin mengagihkannya semula dan menggantikan keseluruhan kepingan, anda harus menggunakan penunjuk.
Mengenai tindanan, terdapat beberapa cara yang lebih baik: Semak soalan ini.
Atas ialah kandungan terperinci Buat jenis daripada slice. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Masalah dan penyelesaian yang dihadapi semasa menyusun dan memasang Redis pada Apple M1 Chip Mac, banyak pengguna boleh ...

Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Definisi nama fungsi bahasa C termasuk: jenis nilai pulangan, nama fungsi, senarai parameter dan badan fungsi. Nama fungsi harus jelas, ringkas dan bersatu dalam gaya untuk mengelakkan konflik dengan kata kunci. Nama fungsi mempunyai skop dan boleh digunakan selepas pengisytiharan. Penunjuk fungsi membolehkan fungsi diluluskan atau ditugaskan sebagai hujah. Kesalahan umum termasuk konflik penamaan, ketidakcocokan jenis parameter, dan fungsi yang tidak diisytiharkan. Pengoptimuman prestasi memberi tumpuan kepada reka bentuk dan pelaksanaan fungsi, sementara kod yang jelas dan mudah dibaca adalah penting.

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Mengenai sebab-sebab dan penyelesaian untuk memaparkan unsur-unsur blok sebaris. Apabila menulis susun atur laman web, kami sering menghadapi masalah paparan yang kelihatan aneh. Bandingkan ...

Cara menggunakan JavaScript atau CSS untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas. Dalam tetapan percetakan penyemak imbas, ada pilihan untuk mengawal sama ada paparan ...

Masalah definisi kelas pendua semasa penghijrahan pangkalan data Laravel berlaku. Apabila menggunakan rangka kerja Laravel untuk penghijrahan pangkalan data, pemaju mungkin menghadapi "kelas telah digunakan ...

Masalah pembukaan kontena kerana peninggalan teks yang berlebihan di bawah susun atur flex dan penyelesaian digunakan ...
