Golang Convertir interfaz a cadena

Sheeraz Gul 20 junio 2023
  1. Interfaz de Golang a cadena
  2. Use fmt.Sprintf para convertir la interfaz a cadena en Golang
  3. Utilice la conversión de tipos para convertir la interfaz en una cadena en Golang
Golang Convertir interfaz a cadena

Este tutorial demuestra cómo convertir la interfaz a una cadena en Golang.

Interfaz de Golang a cadena

La interfaz almacena el conjunto del método sin implementación en Golang, donde los métodos de la interfaz no tendrán el cuerpo del método. En Golang, la interfaz puede estar vacía y se le puede asignar un valor mediante declaración de variable.

A veces es necesario convertir la interfaz a cadena en Golang. Hay dos métodos para convertir la interfaz en una cadena en Golang.

Use fmt.Sprintf para convertir la interfaz a cadena en Golang

El método fmt.Sprintf puede convertir cualquier cosa en una cadena en Golang. Este método también puede convertir una interfaz en una cadena en Golang.

Veamos un ejemplo:

package main

import "fmt"

func main() {
    //Interface with a string value
    var Demo interface{} = "Delftstack"
    resultString := fmt.Sprintf("%v", Demo)
    fmt.Println(resultString)

    //Interface with an array value
    var Demo1 interface{} = []int{10, 20, 30, 40, 50}
    resultString1 := fmt.Sprintf("%v", Demo1)
    fmt.Println(resultString1)
}

El código anterior convertirá la interfaz con la cadena de valor y la matriz en una cadena. Ver la salida:

Delftstack
[10 20 30 40 50]

Program exited.

Pero, ¿y si la interfaz es una matriz con múltiples valores? En ese caso, podemos crear una porción vacía de la longitud de la interfaz y usar un bucle for para convertir cada valor en una cadena y usarlos o ponerlos en la porción.

Ver ejemplo:

package main

import "fmt"

func main() {
    Demo := []interface{}{
        "Delftstack",
        10, 20, 30,
        []int{6, 5, 9},
        struct{ A, B int }{10, 20},
    }

    // Print the interface content
    fmt.Println(Demo)

    // Print the original type before conversion
    fmt.Printf("Original Type of interface: %T\n", Demo)

    // now create an empty slice based on the length of the Interface
    emptyslice := make([]string, len(Demo))

    // Iterate over the Interface and convert values to string
    for index, value := range Demo {
        emptyslice[index] = fmt.Sprint(value)
    }

    // Print the content of the slice
    fmt.Println(emptyslice)

    // Print the type after conversion
    fmt.Printf("The new type is: %T\n", emptyslice)
    fmt.Printf("%q\n", emptyslice)
}

El código anterior convertirá la interfaz con múltiples valores en cadenas. Ver salida:

[Delftstack 10 20 30 [6 5 9] {10 20}]
Original Type of interface: []interface {}
[Delftstack 10 20 30 [6 5 9] {10 20}]
The new type is: []string
["Delftstack" "10" "20" "30" "[6 5 9]" "{10 20}"]

Program exited.

Utilice la conversión de tipos para convertir la interfaz en una cadena en Golang

La conversión de tipos también es posible en Golang. Podemos escribir una interfaz a una cadena; el proceso es muy simple donde la sintaxis .(cadena) se usa para escribir cualquier cosa en una cadena.

Probemos un ejemplo:

package main

import "fmt"

func main() {
    //Interface with a string value
    var Demo interface{} = "Delftstack"
    resultString := Demo.(string)
    fmt.Println(resultString)

}

En este caso, solo podemos escribir la interfaz con un valor de cadena a una cadena. La interfaz con valor de matriz no se puede convertir.

Ver la salida:

Delftstack

Program exited.
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Go String