Jadual Kandungan
Jawapan betul
Rumah pembangunan bahagian belakang Golang Buat jenis daripada slice

Buat jenis daripada slice

Feb 05, 2024 pm 10:57 PM
Ralat kompilasi kelas rentetan overflow

Buat jenis daripada slice

Kandungan soalan

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?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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

}

Salin selepas log masuk


Jawapan betul


Fungsi tolak anda tidak melakukan apa-apa.

Fungsi tolak yang betul:

1

2

3

func (xp *xPath) push(entry string) {

    *xp = append(*xp, entry)

}

Salin selepas log masuk

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Jan 15, 2025 pm 08:11 PM

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang May 06, 2024 pm 01:20 PM

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? May 01, 2024 pm 10:27 PM

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan?

Bagaimana untuk menggunakan kod orang lain dalam python Bagaimana untuk menggunakan kod orang lain dalam python May 05, 2024 pm 07:54 PM

Bagaimana untuk menggunakan kod orang lain dalam python

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java May 03, 2024 pm 02:09 PM

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 May 03, 2024 pm 09:20 PM

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11

Perbezaan antara const dan statik dalam c++ Perbezaan antara const dan statik dalam c++ May 01, 2024 am 10:54 AM

Perbezaan antara const dan statik dalam c++

Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java? Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java? Apr 30, 2024 pm 01:30 PM

Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java?

See all articles