Para los que aprendimos a programar usando C, printf es un viejo coocido 😄
Hola mundo en Go
Introducción al Curso de Golang
¿Qué es, por qué y quienes utilizan Go?
Instalar Go en Linux
Instalar Go en Mac
Instalar Go en Windows
Nuestras primeras líneas de código con Go
Variables, funciones y documentación
Variables, constantes y zero values
Operadores aritméticos
Tipos de datos primitivos
Paquete fmt: algo más que imprimir en consola
Uso de funciones
Go doc: La forma de ver documentación
Estructuras de control de flujo y condicionales
El poder de los ciclos en Golang: for, for while y for forever
Operadores lógicos y de comparación
El condicional if
Múltiple condiciones anidadas con Switch
El uso de los keywords defer, break y continue
Estructuras de datos básicas
Arrays y Slices
Recorrido de Slices con Range
Llave valor con Maps
Structs: La forma de hacer clases en Go
Modificadores de acceso en funciones y Structs
Métodos e interfaces
Structs y Punteros
Stringers: personalizar el output de Structs
Interfaces y listas de interfaces
Concurrencia y Channels
¿Qué es la concurrencia?
Primer contacto con las Goroutines
Channels: La forma de organizar las goroutines
Range, Close y Select en channels
Manejo de paquetes y Go Modules
Go get: El manejador de paquetes
Go modules: Ir más allá del GoPath con Echo
Modificando módulos con Go
Despedida del curso
Despedida
Bonus
Cheat Sheet Go
Librerías para desarrollo web con Go
Data Science con Go
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 25
Preguntas 1
Para los que aprendimos a programar usando C, printf es un viejo coocido 😄
El paquete fmt es el que se encarga de administrar los inputs y outputs de la terminal.
<h3>Tipos de Print:</h3>fmt.Println("Hola Mundo")
fmt.Printf("%s tiene más de %d cursos\n", nombre, cursos)
var message string = fmt.Sprintf("%v tiene más de %v cursos\n", nombre, cursos)
fmt.Println(message)
<h3>Imprimir el tipo de dato:</h3>
Con este paquete podemos imprimir en consola el tipo de dato de variables o constantes. Ejemplo de uso:
package main
import "fmt"
func main() {
const nombre string = "UltiRequiem"
fmt.Printf("La variable 'nombre' es de tipo : %T\n", nombre)
}
Mas información en mi repositorio del curso.
Aquí esta el codigó de la clase:
package main
import "fmt"
func main() {
helloMessage := "Hello"
worldMessage := "world"
// Println: Salto de Linea Automatico
fmt.Println(helloMessage, worldMessage)
fmt.Println(helloMessage, worldMessage)
// Printf
nombre := "Platzi"
cursos := 500
// Con valores seguros
fmt.Printf("%s tiene más de %d cursos\n", nombre, cursos)
// Con valores inseguros
fmt.Printf("%v tiene más de %v cursos\n", nombre, cursos)
// Sprintf
message := fmt.Sprintf("%v tiene más de %v cursos\n", nombre, cursos)
fmt.Println(message)
// Tipo de datos:
fmt.Printf("helloMessage: %T\n", helloMessage)
fmt.Printf("cursos: %T\n", cursos)
}
Aporte de esta clase:
package main
import (
"fmt"
)
func main() {
// Declaración de variables
helloMessage := "!Hola"
worldMessage := "Mundo!"
// Println: Hace un salto de linea al terminar el mensaje
fmt.Println(helloMessage, worldMessage)
fmt.Println(helloMessage, worldMessage)
fmt.Println("")
// Printf: Imprime con un formato
nombre := "Platzi"
cursos := 700
// Cuando sabemos que tipo de variables son podemos usar
/*
bool: %t
int, int8 etc.: %d
uint, uint8 etc.: %d, %#x if printed with %#v
float32, complex64, etc: %g
string: %s
chan: %p
pointer: %p
*/
fmt.Printf("%s tiene más de %d cursos\n", nombre, cursos)
// Si desconocemos el tipo de variable en el formato
fmt.Printf("%v tiene más de %v cursos\n", nombre, cursos)
// Sprintf: Genera un string pero no lo imprime en consola
var message string = fmt.Sprintf("%s es un string", nombre)
fmt.Println(message)
fmt.Println("")
// Imprimir el tipo de variable
fmt.Printf("HelloMessage es tipo: %T\n", helloMessage)
fmt.Printf("Cursos es tipo: %T\n", cursos)
fmt.Println("")
// Si queremos ignorar el % del formato podemos usar doble %%
fmt.Printf("%s es de tipo %T y para usarlo en el Printf se hace uso del %%s\n", nombre, nombre)
}
!Hola Mundo!
!Hola Mundo!
Platzi tiene más de 700 cursos
Platzi tiene más de 700 cursos
Platzi es un string
HelloMessage es tipo: string
Cursos es tipo: int
Platzi es de tipo string y para usarlo en el Printf se hace uso del %s
Hola. Aquí un código que al ejecutarse imprime en consola todo lo de la clase:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println()
fmt.Println("Tipos de datos primitivos")
fmt.Println("*************************")
fmt.Println()
fmt.Println("Especificar el tipo hace que el rendimiento sea mayor a dejarlo declarado implícitamente")
fmt.Println("La declaración de los tipos es en minúsculas (No existe String por ejemplo al estilo del lenguaje Java")
fmt.Println()
fmt.Println("Textos")
fmt.Println("------")
fmt.Println()
fmt.Println("string = \"mi textico\" >>> el texto se coloca entre comillas dobles")
fmt.Println()
fmt.Println("Booleano - lógicos")
fmt.Println("------------------")
fmt.Println()
fmt.Println("bool = true o false >>> Solo esas dos opciones")
fmt.Println()
fmt.Println("Números enteros")
fmt.Println("---------------")
fmt.Println()
fmt.Println("int8 >>> -2^7 a 2^7-1 >>>", math.MinInt8, "a", math.MaxInt8)
fmt.Println("int16 >>> -2^15 a 2^15-1 >>>", math.MinInt16, "a", math.MaxInt16)
fmt.Println("int32 >>> -2^31 a 2^31-1 >>>", math.MinInt32, "a", math.MaxInt32)
fmt.Println("int64 >>> -2^63 a 2^63-1 >>>", math.MinInt64, "a", math.MaxInt64)
fmt.Println()
fmt.Println("Números enteros positivos")
fmt.Println("-------------------------")
fmt.Println()
fmt.Println("uint8 >>> 0 a 2^8-1 >>>", math.MaxUint8)
fmt.Println("uint16 >>> 0 a 2^16-1 >>", math.MaxUint16)
fmt.Println("uint32 >>> 0 a 2^32-1 >>>", math.MaxUint32)
fmt.Println("uint64 >>> 0 a 2^64-1 >>>", uint64(math.MaxUint64))
fmt.Println()
fmt.Println("Números enteros positivos")
fmt.Println("-------------------------")
fmt.Println()
fmt.Println("float32 >>> +/- 1.18e^-38 a +/- 3.4e^38 >>>", math.SmallestNonzeroFloat32, "a", math.MaxFloat32)
fmt.Println("float64 >>> +/- 2.23e^-308 a +/- 1.8e^308 >>>", math.SmallestNonzeroFloat64, "a", math.MaxFloat64)
fmt.Println()
fmt.Println("Números complejos")
fmt.Println("-------------------------")
fmt.Println()
fmt.Println("Complex64 = Real e imaginario, ambos en float32")
fmt.Println("Complex128 = Real e imaginario, ambos en float64")
fmt.Println()
fmt.Println("Se declara: c := 10 + 8i")
variable := 10 + 8i
fmt.Println("Su valor es:", variable)
fmt.Println()
}
Para saber el tipo del dato con la librería fmt:
fmt.Printf("%T\n", variable)
✨ Usamos %T para determinar el tipo de dato de una variable a utilizar.
Para más adelante:
Si se requiere saber tanto llaves como valores de una estructura, Printf ofrece el “+v” como verbo para imprimir llaves y valores
Muy bien
//Clase paquete fmt
helloMessage := "Hello"
worldMessage := "world!"
//Println
fmt.Println(helloMessage,worldMessage)
platzi := "Platzi"
cursos := 500
//Printf
fmt.Printf("%s tiene mas de %d cursos\n",platzi, cursos)
fmt.Printf("%v tiene mas de %v cursos\n",platzi, cursos)
//Sprintf
message := fmt.Sprintf("%s tiene mas de %d cursos\n",platzi, cursos)
fmt.Print(message)
//Tipo de Datos
fmt.Printf("helloMessage %T\n",helloMessage)
fmt.Printf("cursos %T\n",cursos)
Esto me pareció muy intersante
var sinTipo interface{} =21
fmt.Printf("Tipo de dato es %T\n", sinTipo)
sinTipo = "Hola"
fmt.Printf("Tipo de dato es %T\n", sinTipo)
Podemos utilizar Sprintf, para guardar la concatenación de algunas variables y también podemos ver el tipo de dato con %T.
Algo muy interesante, es que podemos imprimir algunas cositas con una función built-in, que podemos utilizar sin importar nada: println() o print, el ln es para el salto de línea.
Podemos usar %s para los strings o %d para enteros y en caso de que no sepamos que vayamos a meter, entonces %v
Tenemos que poner en orden las variables, si primero pusimos dentro de la cadena %s, para un string, entonces debemos poner al lado del string de primera nuestra variable con un número.
Dentro del paquete fmt, podemos utilizar varios de sus métodos, para imprimir en consola. uno de ellos es Printf, en el cuál solo debemos de señalar con un porcentaje una letra reservada para el tipo de dato que queremos concatenar y luego de la cadena, ponemos una coma, con las variables que queremos allí.
// Declaración de variables
helloMessage := "Hello"
worldMessage := "world"
// Println -> Es un print normal con un salto de linea al final
fmt.Println(helloMessage, worldMessage)
fmt.Println(helloMessage, worldMessage)
// Printf -> Es un print al cual le puedes especificar el tipo de objeto que le vas a dar
nombre := "Platzi"
cursos := 500
fmt.Printf("%s tiene mas de %d cursos\n", nombre, cursos)
fmt.Printf("%v tiene mas de %v cursos\n", nombre, cursos) // La v es para cuando no hay certeza de que dato va allí
// Sprintf -> No imprime nada en consola, simplemente lo guarda como un String
message := fmt.Sprintf("%s tiene mas de %d cursos", nombre, cursos)
fmt.Println(message)
// Imprimir el tipo de dato
fmt.Printf("helloMessage: %T\n", helloMessage)
fmt.Printf("cursos: %T", cursos)
func main() {
// Declaracion de variables
helloMessage := "Hello"
worldMessage := "world"
// Println
fmt.Println(helloMessage, worldMessage)
// Printf
nombre := "Platzi"
cursos := 500
fmt.Printf("%s tiene mas de %d cursos\n", nombre, cursos)
// v: no sabes que tipo de dato es
fmt.Printf("%v tiene mas de %v cursos\n", nombre, cursos)
// Sprintf
message := fmt.Sprintf("%s tiene mas de %d cursos", nombre, cursos)
fmt.Println(message)
// Tipo de dato
fmt.Printf("helloMessage: %T\n", helloMessage)
fmt.Printf("cursos: %T", helloMessage)
}
package main
import "fmt"
func main() {
//Declaración de variables
helloMessage := "Hello"
worldMessage := "world!!"
//Println imprime con salto de linea
fmt.Println(helloMessage, worldMessage)
fmt.Println(helloMessage, worldMessage)
//PrintF imprime con formato
//%v se usara para imprimir si no sabemos el formato
nombre := "Platzi"
cursos := 500
fmt.Printf("%s tiene más de %d cursos \n", nombre, cursos)
fmt.Printf("%v tiene más de %v cursos \n", nombre, cursos)
//SprintF sirve para crear una cadena con formato
message := fmt.Sprintf("%s tiene más de %d cursos ", nombre, cursos)
fmt.Println(message)
//%T nos sirve para imprimir el tipo de la variable
fmt.Printf("helloMessage es del tiipo -> %T\n", helloMessage)
fmt.Printf("cursos es del tipo -> %T\n", cursos)
}
%s = significa que el valor sera un String
%d = significa que el valor sera un entero int
%T = identificar el tipo de datof
Una práctica de lo visto:
Muy bueno
Un dato de shortcut que puede ser útil en Code, es si al menos en Mac aprietas “Shift + Option + Fecha Arriba/abajo” se copia la linea abajo.
Printf me parece muy útil y combinado con Sprintf aún más =)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.