|
| 1 | +package main |
| 2 | + |
| 3 | +import "fmt" |
| 4 | + |
| 5 | +func main() { |
| 6 | + //variableAssignment() |
| 7 | + var x int = 45 |
| 8 | + fnByValue(x) |
| 9 | + fmt.Println("Valor de 'x' luego pasar por la función fnByValue", x) |
| 10 | + fnByReference(&x) |
| 11 | + fmt.Println("Valor de 'x' luego pasar por la función fnByReference", x) |
| 12 | + var slice []int = []int{1, 2, 3} |
| 13 | + modifySlice(slice) |
| 14 | + fmt.Println("Slice luego de pasar por la función 'modifySlice'", slice) |
| 15 | + |
| 16 | + //Paso por valor |
| 17 | + fmt.Println("---------------------------------------") |
| 18 | + a, b := 5, 6 |
| 19 | + a1, b1 := swapByValue(a, b) |
| 20 | + fmt.Printf("Valor original a=%d y b=%d\n", a, b) |
| 21 | + fmt.Printf("Valor intercambiado a1=%d y b1=%d\n", a1, b1) |
| 22 | + //Paso por referencia |
| 23 | + fmt.Println("---------------------------------------") |
| 24 | + y, z := 10, 20 |
| 25 | + y1, z1 := swapByRef(&y, &z) |
| 26 | + fmt.Printf("Valor original y=%d y z=%d\n", y, z) |
| 27 | + fmt.Printf("Valor intercambiado y1=%d y z1=%d\n", y1, z1) |
| 28 | + |
| 29 | +} |
| 30 | + |
| 31 | +func fnByValue(x int) { |
| 32 | + x += 100 //Esto no modifica a 'x' ya que recibe por valor |
| 33 | +} |
| 34 | +func fnByReference(x *int) { |
| 35 | + *x += 100 //Esto modifica a 'x' ya que recibe por referencia (apunta a la misma dirección de memoria) |
| 36 | +} |
| 37 | +func modifySlice(slice []int) { |
| 38 | + //Los slice por defecto se pasan por referencia |
| 39 | + for i, v := range slice { |
| 40 | + slice[i] = v * 2 |
| 41 | + } |
| 42 | +} |
| 43 | +func swapByValue(a, b int) (int, int) { |
| 44 | + a, b = b, a |
| 45 | + return a, b |
| 46 | +} |
| 47 | + |
| 48 | +func swapByRef(a, b *int) (int, int) { |
| 49 | + *a, *b = *b, *a |
| 50 | + return *a, *b |
| 51 | +} |
| 52 | + |
| 53 | +func VariableAssignment() { |
| 54 | + //POR VALOR |
| 55 | + //Todo los tipos básicos se asignan por valor |
| 56 | + var varInt int = 35 |
| 57 | + var varInt1 int = varInt |
| 58 | + varInt1 = 50 |
| 59 | + fmt.Printf("'varInt'= %d, 'varInt1=' %d \n", varInt, varInt1) |
| 60 | + |
| 61 | + var varUint uint = 1500000 |
| 62 | + var varUint1 uint = varUint |
| 63 | + varUint1 = 1500 |
| 64 | + fmt.Printf("'varUint'= %d, 'varUint1'= %d \n", varUint, varUint1) |
| 65 | + |
| 66 | + var varFloat32 float32 = 2500.5 |
| 67 | + var varFloat32_1 float32 = varFloat32 |
| 68 | + varFloat32_1 = 1500.23 |
| 69 | + fmt.Printf("'varFloat32'= %f, 'varFloat32_1'= %f \n", varFloat32, varFloat32_1) |
| 70 | + |
| 71 | + var varString string = "Hola dev" |
| 72 | + var varString1 string = varString |
| 73 | + varString1 = "amsoft.dev" |
| 74 | + fmt.Printf("'varString'= %s, 'varString_1'= %s \n", varString, varString1) |
| 75 | + |
| 76 | + var varComplex64 complex64 = 2i |
| 77 | + var varComplex64_1 complex64 = varComplex64 |
| 78 | + varComplex64_1 = 5i |
| 79 | + fmt.Printf("'varComplex64'= %v, 'varComplex64_1'= %v \n", varComplex64, varComplex64_1) |
| 80 | + |
| 81 | + var varRune rune = 'A' |
| 82 | + var varRune1 rune = varRune |
| 83 | + varRune1 = 'B' |
| 84 | + fmt.Printf("'varRune'= %v, 'varRune_1'= %v \n", varRune, varRune1) |
| 85 | + |
| 86 | + var array [3]int = [3]int{1, 2, 3} |
| 87 | + var array1 [3]int = array |
| 88 | + array1[0] = 20 |
| 89 | + fmt.Println(array) |
| 90 | + fmt.Println(array1) |
| 91 | + |
| 92 | + //POR REFERENCIA, tipos de datos por referencia |
| 93 | + //slices |
| 94 | + fmt.Println("TIPOS POR REFERENCIA") |
| 95 | + fmt.Println("--------------------") |
| 96 | + var slice []int = []int{1, 2, 3} |
| 97 | + var slice1 []int = slice |
| 98 | + slice1[0] = 20 |
| 99 | + fmt.Println(slice) |
| 100 | + fmt.Println(slice) |
| 101 | + |
| 102 | + //mapas |
| 103 | + var varMap map[string]string = map[string]string{"clave1": "valor1", "clave2": "valor2"} |
| 104 | + var varMap1 map[string]string = varMap |
| 105 | + varMap1["clave1"] = "valor 1 modificado" |
| 106 | + fmt.Println(varMap) |
| 107 | + fmt.Println(varMap1) |
| 108 | + |
| 109 | + //Punteros |
| 110 | + var var1 uint = 3 |
| 111 | + var var2 *uint = &var1 |
| 112 | + *var2 = 15 |
| 113 | + println(var1, *var2) //var1 y var2 apuntan a la misma dirección de memoria |
| 114 | +} |
0 commit comments