Hasta ahora en nuestros programas solo hemos definido variables que pueden almacenar valores enteros y reales:
int float64 float32
Si necesitamos almacenar un conjunto de caracteres en el lenguaje Go debemos definir una variable de tipo string.
Definir 4 variables de tipo string que almacenen los nombres de países sudamericanos. Imprimir su contenido.
package main import "fmt" func main() { var pais1, pais2, pais3, pais4 string pais1 = "Argentina" pais2 = "Chile" pais3 = "Brasil" pais4 = "Guayana Francesa" fmt.Println("Listado de 4 paises sudamericanos") fmt.Print(pais1,"-",pais2,"-",pais3,"-",pais4) }
Como vemos para definir una variable de tipo string lo hacemos de forma similar a la definición de enteros y reales.
En una variable de tipo string podemos cargar una cantidad variable de caracteres.
Una vez cargado los caracteres a un string no se pueden cambiar:
var pais1 as string pais1="argentina"
No podemos cambiar el primer caracter por una "A", ya que es un string.
Pero si podemos cambiar todo el string por otro:
var pais1 as string pais1="argentina" ..... pais1="Argentina"
Lo anterior si está permitido.
Podemos definir una variable de tipo string por inferencia para que el compilador detecte que se trata de un string sin tener que decirlo en forma explícita, el programa anterior quedaría como sigue:
package main import "fmt" func main() { pais1 := "Argentina" pais2 := "Chile" pais3 := "Brasil" pais4 := "Guayana Francesa" fmt.Println("Listado de 4 paises sudamericanos") fmt.Print(pais1,"-",pais2,"-",pais3,"-",pais4) }
Ingresar los nombres de dos países y su cantidad de habitantes. Mostrar el nombre del país que tiene más habitantes.
package main import "fmt" func main() { var pais1, pais2 string var cant1, cant2 int fmt.Print("Nombre de país:") fmt.Scan(&pais1) fmt.Print("Cantidad de habitantes:") fmt.Scan(&cant1) fmt.Print("Nombre de país:") fmt.Scan(&pais2) fmt.Print("Cantidad de habitantes:") fmt.Scan(&cant2) if cant1 > cant2 { fmt.Println("El pais ", pais1, " tiene más habitantes:", cant1) } else { fmt.Println("El pais ", pais2, " tiene más habitantes:", cant2) } }
Para cargar un string lo hacemos por el momento utilizando la función Scan del paquete fmt. Lo importante es tener en cuenta una característica de la función Scan que no permite cargar un caracter en blanco, es decir que por ahora siempre que carguemos string evitemos cargar el espacio en blanco. Un poco más adelante veremos como podemos hacer la carga de string con espacios en blanco.
Ingresar dos nombres de personas por teclado y luego imprimir el que es menor alfabéticamente hablando.
package main import "fmt" func main() { var nombre1, nombre2 string fmt.Print("Ingrese primer nombre:") fmt.Scan(&nombre1) fmt.Print("Ingrese segundo nombre:") fmt.Scan(&nombre2) if nombre1 < nombre2 { fmt.Print(nombre1, " es menor alfabéticamente hablando") } else { fmt.Print(nombre2, " es menor alfabéticamente hablando") } }
Podemos utilizar cualquiera de los operadores relacionales para comparar dos variables de tipo string.
ejercicio063.go package main import "fmt" func main() { var nombre1, nombre2 string fmt.Print("Ingrese primer nombre:") fmt.Scan(&nombre1) fmt.Print("Ingrese segundo nombre:") fmt.Scan(&nombre2) fmt.Println("Listado de nombres en forma alfabética") if nombre1 < nombre2 { fmt.Print(nombre1, " ", nombre2) } else { fmt.Print(nombre2, " ", nombre1) } } ejercicio064.go package main import "fmt" func main() { var valor int var opcion string suma := 0 for { fmt.Print("Ingrese un entero:") fmt.Scan(&valor) suma = suma + valor fmt.Print("Desea cargar otro valor[si/no]?") fmt.Scan(&opcion) if opcion=="no" { break } } fmt.Print("La suma de los valores ingresados es ", suma) }