Ejemplos de fundición de Golang

Ejemplos De Fundicion De Golang



El proceso de alterar el tipo de datos de un valor de un tipo a otro se conoce como conversión de tipos, a veces conocida como conversión de tipos. La conversión de tipos se logra en Go usando las conversiones de tipos explícitas. Go admite escritura fuerte. Por lo tanto, al convertir entre tipos, debemos indicar explícitamente nuestro objetivo. Esto promueve la seguridad tipográfica y reduce la probabilidad de errores tipográficos. En este artículo, exploraremos la transmisión con diferentes tipos en Go.

Ejemplo 1: fundición de tipos básicos de Golang

Comencemos con el ejemplo de conversión directa y básica en Go porque requerimos encasillamiento para modificar el tipo de la variable, en cualquier lugar.

paquete principal
importar (
    'fmt'
)
función principal () {
    era X En t = 31
    y := flotar64 ( X )
fmt . Imprimir ( y )      
}

Aquí, comenzamos con la función principal al declarar una variable llamada “x” de tipo “int” y asignarle un valor de 31. Luego, la variable “y” se declara usando el operador de asignación abreviado “:=”. El tipo de 'y' se determina automáticamente a partir de la expresión del lado derecho, que es el resultado de convertir 'x' en 'float64'. Entonces, en este programa, el valor de 'x' se convierte en 'float64' y se asigna a 'y'.







Los resultados que se recuperan de la conversión básica en Go se muestran de la siguiente manera:





Ejemplo 2: conversión de tipos implícita de Golang

No se permite la conversión implícita de tipos entre diferentes tipos. Go impone una escritura fuerte, lo que significa que no podemos asignar o usar directamente un valor de un tipo como otro tipo sin una conversión explícita. A continuación, intentamos realizar la conversión implícita que genera la excepción por parte de Go:





paquete principal
importar 'fmt'
función principal () {
  era entero En t = 9 . 08
fmt . Imprimir ( 'Entero es %g' , entero )
}

Aquí está el código que comienza con la función main() donde se declara una variable 'entera' con el tipo 'int'. El valor que se asigna a la variable 'entera' es 9,08, que es un número de punto flotante. Dado que estamos intentando asignar un valor de coma flotante directamente a una variable entera, se produce un error de discrepancia de tipo. Luego, usamos la función 'printf' del paquete 'fmt' para imprimir el valor de la variable 'entero' usando el especificador de formato '%g'.

Como era de esperar, la conversión implícita de tipos no es aceptable en Golang. La conversión de tipos implícita anterior genera el siguiente error:



 

Ejemplo 3: conversión de tipos explícitos de Golang

La conversión de tipo explícita nos permite convertir de forma segura los valores entre tipos compatibles mientras se declara explícitamente una intención. Garantiza que seamos conscientes de la conversión de tipo y ayuda a evitar los errores de tipo accidentales. Considere la siguiente conversión explícita:

paquete principal
importar 'fmt'

función principal () {
  era floatVal flotar32 = 6 . 75
  era valorinterno En t = En t ( floatVal )
fmt . Imprimir ( 'El valor flotante es %g \norte ' , floatVal )
fmt . Imprimir ( 'El valor entero es %d' , valorinterno )
}

Aquí se crea una variable “floatVal” con el tipo “float32” y se le asigna el valor “6.75”. Luego, se declara una variable “intVal” con el tipo “int”. Para asignar el valor de floatVal a intVal, se utiliza la conversión de tipos. Para transformar floatVal en un valor entero, la función 'int' se usa con floatVal como entrada. Después de eso, 'fmt.Printf('El valor flotante es %g\n', floatVal)' imprime el valor de floatVal usando el especificador de formato %g que es adecuado para imprimir los valores de coma flotante. Mientras que la línea de código 'fmt.Printf('El valor entero es %d', intVal)' imprime el valor de intVal usando el especificador de formato %d que es adecuado para imprimir los valores enteros.

El siguiente resultado genera los valores tanto para floatVal como para intVal después de convertirlo:

 

Ejemplo 4: conversión de tipos de Golang para obtener el promedio

A continuación, realizamos la conversión para obtener el número promedio de los valores dados. Repasemos el código fuente que se proporciona a continuación:

paquete principal
importar 'fmt'
función principal () {
    era total En t = 900
    era Mi número En t = 20
    era promedio flotar32
promedio = flotar32 ( total ) / flotar32 ( Mi número )
fmt . Imprimir ( 'El promedio es = %f \norte ' , promedio )
}

Aquí, inicialmente declaramos tres variables. El 'total' es una variable entera que se inicializa con el valor de 900. 'MyNumber' es una variable entera que se inicializa con el valor de 20. El promedio calculado se almacena luego en la variable 'promedio' float32. Luego se da la fórmula promedio para realizar el cálculo. Para garantizar que la división se realice como una división de punto flotante, los valores de 'total' y 'MyNumber' se convierten a float32 mediante la conversión de tipo. El promedio calculado se asigna a la variable “promedio”. Finalmente, la cadena de formato “%f\n” que se usa en la función “printf” especifica que se debe imprimir un valor flotante, seguido de un carácter de nueva línea.

El valor resultante como promedio se obtiene después de implicar la conversión de tipos en el código anterior:

Ejemplo 5: Golang Int y conversión de tipo de cadena

Además, Go también ofrece conversión entre tipos Int y String. Podemos lograr esto usando la función del paquete strconv.

paquete principal
importar (
    'fmt'
    'strconv'
)
función principal () {
    era calle cadena = '1999'
en , _ := strconv . remolque ( s )      
fmt . Imprimir ( en )    
    era entero En t = 1999
aStr := strconv . ahogue ( entero )      
     
fmt . Imprimir ( aStr )
}

Aquí está el código que comienza con la declaración de dos variables. El 'str' ​​es una variable de cadena que se inicializa con el valor de '1999' y el 'entero' es una variable entera que se inicializa con el valor de '1999'. Después de eso, la función “strconv.Atoi()” se usa para convertir la cadena “str” a un valor entero. El valor devuelto de 'v' representa el número entero convertido, y el identificador '_' en blanco se usa para ignorar cualquier error potencial que devuelva Atoi().

A continuación, se emplea la función strconv.Itoa() para transformar el entero en un valor de cadena. El valor devuelto que es 'toStr' representa la cadena convertida.

El resultado muestra la conversión de la cadena '1999' a un número entero y nuevamente a una cadena que produce el valor original de '1999':

 

Ejemplo 6: conversión de tipos de Golang entre cadenas y bytes

Además, la conversión en Go también se puede realizar en tipos de cadenas y bytes. Los siguientes códigos demuestran la conversión entre cadenas y segmentos de bytes:

paquete principal
importar (
    'fmt'
)
función principal () {
    era mister cadena = 'Hola'
    era b1 [] byte = [] byte ( miStr )    
fmt . Imprimir ( b1 )
Encadenar := cadena ( b1 )      
fmt . Imprimir ( Encadenar )  
}

Aquí, las variables se declaran primero como 'myStr' y 'b1', que se inicializan con ciertos valores. Luego, la expresión []byte(myStr) convierte la cadena 'myStr' en un segmento de bytes usando la conversión de tipos. Asigna el segmento de bytes resultante a la variable 'b1'. Después de eso, la expresión 'cadena (b1)' convierte el segmento de bytes b1 nuevamente en una cadena usando la conversión de tipo. Asigna la cadena resultante a la variable 'toString'.

El resultado muestra la conversión entre la cadena 'Hola' y su representación de segmento de bytes correspondiente de la siguiente manera:

Ejemplo 7: conversión de tipo Golang para obtener la raíz cuadrada

Ahora, hacemos la conversión en Go para encontrar los resultados de la raíz cuadrada. El código se coloca de la siguiente manera:

paquete principal
importar (
    'fmt'
    'matemáticas'
)
función principal () {
    era norte En t = 177
    era SqrtN flotar64
SqrtN = matemáticas . Sqrt ( flotar64 ( norte ))
fmt . Imprimir ( 'La raíz cuadrada de %d es %.2f \norte ' , norte , SqrtN )
}

Aquí, la variable 'n' se declara como un int y le asigna el valor de '144'. La variable 'SqrtN' se declara como float64 y almacena la raíz cuadrada calculada de 'n'. Luego, se implementa la función math.Sqrt() para calcular la raíz cuadrada de 'n'. Dado que math.Sqrt() espera un argumento float64, y el valor de 'n' se convierte en float64 usando float64(n). Después de eso, la cadena de formato 'La raíz cuadrada de %d es %.2f\n' llama a la función 'printf' que especifica un valor entero (%d) y un valor de coma flotante (%.2f). El especificador de precisión '.2' en '%.2f' garantiza que la raíz cuadrada se imprima con dos decimales.

Se obtiene el siguiente resultado que indica la raíz cuadrada del valor dado:

Conclusión

La conversión en Go se analiza con distintos ejemplos que son todos ejecutables. Tenga en cuenta que en Go, el encasillamiento es explícito, lo que impone una escritura fuerte y promueve la claridad y confiabilidad del código.