Maison >développement back-end >Golang >Accéder à la chaîne contenue dans une tranche

Accéder à la chaîne contenue dans une tranche

王林
王林avant
2024-02-10 20:00:191191parcourir

Accéder à la chaîne contenue dans une tranche

l'éditeur php Xiaoxin est là pour vous présenter comment accéder à la chaîne contenue dans la tranche. En PHP, le slicing fait référence à l'opération consistant à intercepter une partie des caractères d'une chaîne. En accédant aux chaînes de la tranche, nous pouvons obtenir les données requises ou effectuer d'autres opérations. Lors de l'utilisation du découpage, nous devons spécifier la position de départ et la position de fin pour obtenir la chaîne correspondante. Maîtriser l'utilisation des tranches apportera une grande commodité à notre travail de développement. Ensuite, apprenons en détail comment accéder à la chaîne contenue dans la tranche !

Contenu des questions

Je fais quelques exercices de codage pour mieux comprendre. L'exercice donné me demande de créer un programme qui accepte les entrées de l'utilisateur comme suit :

  • La première ligne spécifie combien de chaînes seront fournies en entrée sur des lignes distinctes
  • Les n lignes suivantes sont chacune une seule chaîne

Je souhaite afficher les caractères correspondant aux indices pairs et impairs de chaque chaîne, séparés par des espaces, et avec chaque chaîne sur une ligne distincte.

Exemple de saisie :

2
foo_bar
fizz_buzz

devrait afficher :

fobr o_a
fz_uz izbz

Mais accéder à la tranche de chaîne dans mon programme renvoie une chaîne vide :

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

Solution de contournement

Parce que lorsque vous make stringstranchez, vous créez une tranche dont la capacité et la longueur sont n. Ainsi, lorsque vous y ajoutez, vous augmentez la longueur de la tranche :

Changez ce 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)
}

À :

// 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)
}

ou

// 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
}

Vous devez adopter votre meilleur comportement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer