Skip to content

Commit bf88d05

Browse files
authored
Merge pull request mouredev#4588 from AmadorQuispe/aqh
#5 - GO
2 parents 5b6b557 + 62cfc26 commit bf88d05

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
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

Comments
 (0)