Heim >Backend-Entwicklung >Golang >Greifen Sie auf die in einem Slice enthaltene Zeichenfolge zu

Greifen Sie auf die in einem Slice enthaltene Zeichenfolge zu

王林
王林nach vorne
2024-02-10 20:00:191214Durchsuche

Greifen Sie auf die in einem Slice enthaltene Zeichenfolge zu

php-Editor Xiaoxin ist hier, um vorzustellen, wie man auf die im Slice enthaltene Zeichenfolge zugreift. Unter Slicing versteht man in PHP den Vorgang des Abfangens eines Teils von Zeichen aus einer Zeichenfolge. Durch den Zugriff auf die Zeichenfolgen im Slice können wir die erforderlichen Daten abrufen oder andere Vorgänge ausführen. Bei der Verwendung von Slicing müssen wir die Start- und Endposition angeben, um die entsprechende Zeichenfolge zu erhalten. Die Beherrschung der Verwendung von Slices wird unsere Entwicklungsarbeit erheblich erleichtern. Als nächstes lernen wir im Detail, wie man auf die im Slice enthaltene Zeichenfolge zugreift!

Frageninhalt

Ich mache einige Codierungsübungen, um Go besser zu verstehen. Die gegebene Übung weist mich an, ein Programm zu erstellen, das Benutzereingaben wie folgt akzeptiert:

  • Die erste Zeile gibt an, wie viele Zeichenfolgen als Eingabe in separaten Zeilen bereitgestellt werden
  • Die nächsten n Zeilen sind jeweils eine einzelne Zeichenfolge

Ich möchte die Zeichen ausgeben, die den geraden und ungeraden Indizes jeder Zeichenfolge entsprechen, durch Leerzeichen getrennt und jede Zeichenfolge in einer separaten Zeile.

Eingabebeispiel:

2
foo_bar
fizz_buzz

sollte Folgendes ausgeben:

fobr o_a
fz_uz izbz

Aber der Zugriff auf das String-Slice in meinem Programm gibt einen leeren String zurück:

package main

import (
    "fmt"
)

func main() {
    // read an integer describing how many strings will be input
    var num_strings int
    fmt.scan(&num_strings)

    // create a slice of strings to hold provided strings
    strings := make([]string, num_strings)

    // add provided strings to slice
    for i := 0; i < num_strings; i++ {
        var temp string
        fmt.scan(&temp)
        strings = append(strings, temp)
    }

    // check that strings have been appended
    fmt.println("strings:", strings)

    // check that strings can be accessed
    for i := 0; i < num_strings; i++ {
        fmt.println(i, strings[i]) // only i prints, not strings[i]
    }

    // loop over all strings
    for i := 0; i < num_strings; i++ {

        // if string index is even print the char
        for index, val := range strings[i] {
            if index%2 == 0 {
                fmt.print(val)
            }
        }

        fmt.print(" ")

        // if string index is odd print the char
        for index, val := range strings[i] {
            if index%2 != 0 {
                fmt.print(val)
            }
        }

        // newline for next string
        fmt.print("\n")
    }
}
2
foo_bar
fizz_buzz
Strings: [  foo_bar fizz_buzz]
0 
1

Workaround

Denn wenn Sie make strings einen Slice erstellen, erstellen Sie einen Slice, dessen Kapazität und Länge n beträgt. Wenn Sie also daran anhängen, erhöhen Sie die Länge des Slice:

Ändern Sie diesen Code:

// create a slice of strings to hold provided strings
strings := make([]string, num_strings)

// add provided strings to slice
for i := 0; i < num_strings; i++ {
  var temp string
  fmt.scan(&temp)
  strings = append(strings, temp)
}

An:

// create a slice of strings to hold provided strings
strings := []{}

// add provided strings to slice
for i := 0; i < num_strings; i++ {
  var temp string
  fmt.scan(&temp)
  strings = append(strings, temp)
}

oder

// create a slice of strings to hold provided strings
strings := make([]string, num_strings)

// add provided strings to slice
for i := 0; i < num_strings; i++ {
  var temp string
  fmt.Scan(&temp)
  strings[i] = temp
}

Du solltest dich von deiner besten Seite zeigen.

Das obige ist der detaillierte Inhalt vonGreifen Sie auf die in einem Slice enthaltene Zeichenfolge zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen