Maison  >  Article  >  développement back-end  >  Casting d'un tableau go à l'aide d'un alias de type

Casting d'un tableau go à l'aide d'un alias de type

王林
王林avant
2024-02-12 10:57:08500parcourir

使用类型别名强制转换 go 数组

En langage Go, la conversion d'un tableau à l'aide d'un alias de type est une opération courante. Les alias de type créent un nouveau nom pour un type existant afin de faciliter la conversion de type. En utilisant des alias de type, nous pouvons convertir un tableau en un tableau d'un autre type. Cette opération de conversion est très simple dans le langage Go et peut améliorer efficacement la lisibilité et la maintenabilité du code. Dans cet article, nous présenterons comment convertir un tableau Go à l'aide d'alias de type et fournirons quelques exemples pour aider les lecteurs à mieux comprendre ce concept.

Contenu de la question

Supposons que j'ai un type défini bytes qui est un tableau d'octets comme indiqué ci-dessous. Existe-t-il un moyen simple de convertir un tableau de tableaux d'octets en tableau d'octets ou vice versa ?

package main

type Bytes []byte

func main() {
    x := make([][]byte, 3)
    y := ([]Bytes)(x)
}

Workaround

Non, malheureusement, go ne permet pas la conversion directe entre différents types, même s'il s'agit d'alias. L'alias revient plutôt à donner un nouveau nom à un type existant, mais il ne fournit aucune forme de conversion automatique.

Vous devez parcourir manuellement [][]byte et convertir chaque []byte en tapant bytes.

La méthode de fonctionnement spécifique est la suivante :

package main

import "fmt"

type Bytes []byte

func main() {
    x := make([][]byte, 3)
    // Initializing byte slices for demonstration purposes
    for i := range x {
        x[i] = []byte{byte(i), byte(i+1)}
    }

    y := make([]Bytes, len(x))
    for i, v := range x {
        y[i] = Bytes(v)
    }

    fmt.Println("Hello, 世界", y)
}

Ce code itère manuellement x, convertissant chaque []byte en un byte et le plaçant dans la position correspondante dans y.

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