{"id":30754253,"url":"https://github.com/twogg-git/go-intro","last_synced_at":"2025-09-04T09:08:53.019Z","repository":{"id":83441582,"uuid":"286897789","full_name":"twogg-git/go-intro","owner":"twogg-git","description":"Some basic Golang examples","archived":false,"fork":false,"pushed_at":"2020-10-08T02:33:51.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T02:01:53.126Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twogg-git.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-12T02:35:53.000Z","updated_at":"2020-10-08T02:33:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"33a4e8ff-ae73-41d3-8923-de2fa2f43a0e","html_url":"https://github.com/twogg-git/go-intro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/twogg-git/go-intro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twogg-git%2Fgo-intro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twogg-git%2Fgo-intro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twogg-git%2Fgo-intro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twogg-git%2Fgo-intro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twogg-git","download_url":"https://codeload.github.com/twogg-git/go-intro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twogg-git%2Fgo-intro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273581237,"owners_count":25131393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-04T09:07:43.095Z","updated_at":"2025-09-04T09:08:53.004Z","avatar_url":"https://github.com/twogg-git.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Golang ejemplos basicos\n\n## Declaración \u0026 Variables\n```sh\nvar foo int (sin inicializar)   \nvar foo int = 42 (con inicialización)   \nvar foo, bar int = 42, 1302 (declaración múltiple)   \nvar foo = 42 (tipo omitido se infiere)   \nfoo := 42 (tipo omitido, sólo dentro de funciones)   \n```\n```sh\nconst constant = \"Esto es una constante\"   \n```\n```sh\nbool, string, int   \nint8 int16 int32 int64   \nuint uint8 uint16 uint32 uint64 uintptr   \nfloat32 float64 complex64 complex128   \nbyte (alias for uint8)   \n```\n\n## Funciones\n\n```sh\n// función simple\nfunc functionName() {}\n\n// función con parámetros (nombre tipo)\nfunc functionName(param1 string, param2 int) {} \n\n// múltiples parámetros mismo tipo\nfunc functionName(param1, param2 int) {}\n\n// tipo del retorno inferido\nfunc functionName() int { \n  return 42\n}\n```\n\n```sh\n// retorno con múltiples valores\nfunc returnMulti() (int, string) { \n  return 42, \"foobar\"\n}\nvar x, str = returnMulti()\n```\n\n```sh\n// retorno múltiple inferido\nfunc returnMulti2() (n int, s string) { \n  n = 42\n  s = \"foobar\"\n  // retornará n y s \n  return\n}\nvar x, str = returnMulti2()\n```\n\n```sh\n \nfunc main() { \n  fmt.Println(adder(1, 2, 3)) // 6 \n  fmt.Println(adder(9, 9)) // 18 \n  nums := []int{10, 20, 30} \n  fmt.Println(adder(nums...)) // 60\n}\n\n// Usando ... antes del tipo se puede indicar que se aceptan 0 o más parámetros del mismo tipo\nfunc adder(args ...int) int { \n  total := 0\n  for _, v := range args { // Itera según tantos argumentos reciba \n    total += v\n  }\n  return total \n}\n```\n\n##  Estructuras: If\n```sh\nfunc main() {\n  // Basico\n  if x \u003e 0 { \n    return x\n  } else {\n    return -x\n  }\n\n  if a := b + c; a \u003c 42 { \n    return a\n  } else {\n    return a - 42\n  } \n}\n```\n\n## Estructuras: Structs\n```sh\nstrings := []string{\"hello\", \"world\"}\nfor i, s := range strings {\n\tfmt.Println(i, \" \", s)\n}\n````\n\n##  Estructuras: Switch\n```sh\n  switch operatingSystem { \n  case \"darwin\":\n    fmt.Println(\"Mac OS Hipster\")\n    // cierra el case automáticamente\n  case \"linux\": \n    fmt.Println(\"Linux Geek\")\n  default:\n    // Windows, BSD, ... \n    fmt.Println(\"Other\")\n  }\n\n  // también se pueden hacer comparaciones\n  number := 42 \n  switch {\n  case number \u003c 42: \n    fmt.Println(\"Smaller\")\n  case number == 42: \n    fmt.Println(\"Equal\")\n  case number \u003e 42: \n    fmt.Println(\"Greater\")\n  }\n```\n\n## Estructuras: Arrays\n```sh\nvar a [10]int // array tamaño 10 tipo enteros \na[3] = 42 // define elemento\ni := a[3] // leer el elemento\n// declaración e inicialización\nvar a = [2]int{1, 2}\na := [2]int{1, 2} //tamaño definido\na := [...]int{1, 2} // elipsis -\u003e Compilador define el tamaño\n```\n\n## Estructuras: Slice\n```sh\n var a []int // declaración similar al array, tamaño no especificado \n var a = []int {1, 2, 3, 4} // declaración con inicialización\na := []int{1, 2, 3, 4} // versión corta\nchars := []string{0:\"a\", 2:\"c\", 1: \"b\"} // [\"a\", \"b\", \"c\"]\n// creación con función make\na = make([]byte, 5, 5) // primero tamaño, luego capacidad \na = make([]byte, 5) // capacidad es opcional\n// creación con base en array\nx := [3]string{\"Лайка\", \"Белка\", \"Стрелка\"} \ns := x[:] // a slice referencing the storage of x\n```\n\n## Estructuras: Maps\n```sh\nvar m map[string]int\nm = make(map[string]int) m[\"key\"] = 42 fmt.Println(m[\"key\"])\ndelete(m, \"key\")\nelem, ok := m[\"key\"] // evalúa si key está presente y la retorna\n\n// map literal\nvar m = map[string]Vertex{\n  \"Bell Labs\": {40.68433, -74.39967}, \n  \"Google\": {37.42202, -122.08408},\n}\n```\n## Estructuras: Structs\n```sh\npackage main\nimport \"fmt\"\n\ntype Employee struct { \n  firstName, lastName string\n  age, salary int \n}\n\nfunc main() {\n  //creación de estructuras usando el nombre \n  emp1 := Employee{\n  firstName: \"Sam\",\n  lastName: \"Anderson\",\n  age: 25,\n  salary: 500, \n}\n// creación de estructuras sin usar nombres\nemp2 := Employee{\"Thomas\", \"Paul\", 29, 800} \nfmt.Println(\"Employee 1\", emp1) \nfmt.Println(\"Employee 2\", emp2)\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwogg-git%2Fgo-intro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwogg-git%2Fgo-intro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwogg-git%2Fgo-intro/lists"}