Herramientas de usuario

Herramientas del sitio


wiki2:go_useful

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
wiki2:go_useful [2019/08/20 10:59]
alfred [Gotchas]
wiki2:go_useful [2020/05/09 09:25] (actual)
Línea 19: Línea 19:
  
  
-==== dep tool for managing dependences ====+==== go mod for managing dependences ==== 
 +After Go 1.11. 
 +<​code>​ 
 +go mod init <project name> 
 +# Do not do it in the GOPATH 
 +</​code>​ 
 + 
 +When you do ''​go build''​ it downloads dependencies automatically. 
 + 
 +There will appear ''​go.mod''​ y ''​go.sum''​ files. The first one to list dependences,​ the second one the checksums. 
 + 
 +<​code>​ 
 +go mod tidy      # To remove non-used libraries 
 +go mod vendor ​   # To vendor dependencies in vendor directory. 
 +</​code>​ 
 + 
 +Then, if you added a new package to your project, to use them: 
 +<​code>​ 
 +import "​project/​package"​ 
 +</​code>​ 
 +==== dep tool for managing dependences ​(DEPRECATED) ​====
  
 To install: ''​apt install go-dep''​. To initialize a project: To install: ''​apt install go-dep''​. To initialize a project:
Línea 118: Línea 138:
 </​code>​ </​code>​
 ===== Conversions ===== ===== Conversions =====
 +Previous code:
 +<​code>​
 +import "​strconv"​
 +</​code>​
 +Code
 <​code>​ <​code>​
 // String to byte[] // String to byte[]
Línea 124: Línea 149:
 // Byte to String // Byte to String
 str := string(buff) str := string(buff)
 +
 +// Int to string
 +str := strconv.Itoa(currentNumber)
 </​code>​ </​code>​
 ===== Program ===== ===== Program =====
Línea 133: Línea 161:
 <​code>​ <​code>​
 argumentsWithoutProgramName = os.Args[1:] argumentsWithoutProgramName = os.Args[1:]
 +settings_path = os.Getenv("​GLOUDVIEWER_CONFIG"​)
 </​code>​ </​code>​
  
Línea 141: Línea 170:
 </​code>​ </​code>​
  
 +
 +===== Maps =====
 +
 +<​code>​
 +var m map[string]Vertex
 +m = make(map[string]Vertex)
 +m["​Bell Labs"] = Vertex{40.68433,​ -74.39967}
 +</​code>​
 +<​code>​
 +keys := make([]keyType,​ 0, len(myMap))
 +values := make([]valueType,​ 0, len(myMap))
 +for k, v := range myMap {
 + keys = append(keys,​ k)
 + values = append(values,​ v)
 +}
 +</​code>​
 ===== Go Routines ===== ===== Go Routines =====
 Previous code used: Previous code used:
Línea 162: Línea 207:
  
 ===== Not so common types ===== ===== Not so common types =====
 +Previous code:
 +<​code>​
 +import "​bytes"​
 +</​code>​
 +
 Code: Code:
 <​code>​ <​code>​
Línea 173: Línea 223:
 Previous code used: Previous code used:
 <​code>​ <​code>​
-"​io/​ioutil"​ +import ​"​io/​ioutil"​ 
-</code>+import "​encoding/json"​ 
 type Generation struct { type Generation struct {
  Project ​        ​string  Project ​        ​string
Línea 180: Línea 231:
  Version ​        ​string `json:"​version"​`  Version ​        ​string `json:"​version"​`
 } }
 +</​code>​
 Code: Code:
 <​code>​ <​code>​
Línea 190: Línea 242:
 json.Unmarshal(b,​ &​generation) json.Unmarshal(b,​ &​generation)
 </​code>​ </​code>​
 +
 +===== Filesystem =====
 +Previous code:
 +<​code>​
 +import "​strings"​
 +import "​path"​
 +import "​path/​filepath"​
 +</​code>​
 +
 +Code:
 +<​code>​
 +// info is info os.FileInfo type
 +
 +// Is a directory:
 +info.IsDir()
 +
 +// Get parent path from a path (pth)
 +filepath.Dir(pth)
 +
 +// File name without extension:
 +strings.TrimSuffix(info.Name(),​ pth.Ext(info.Name())
 +
 +// Join path
 +path.Join(arguments[0],​ selectedProject)
 +</​code>​
 +
 +====== Snippets ======
 +===== Map, reduce, filter in Go =====
 +
 +<​code>​
 +func mapXtoY(collection []X, fn func(elem X) Y) []Y {
 + var result []Y
 + for _, item := range collection {
 + result = append(result,​ fn(item))
 + }
 + return result
 +}
 +
 +func reduceXtoY(collection []X, init Y, fn func(memo Y, elem X) Y) Y {
 + result := init
 + for _, item := range collection {
 + result = fn(result, item)
 + }
 + return result
 +}
 +
 +func filterXs(collection []X, fn func(elem X) bool) []X {
 + var result []X
 + for _, item := range collection {
 + if fn(item) {
 + result = append(result,​ item)
 + }
 + }
 + return result
 +}
 +</​code>​
 +
 +===== Nested functions =====
 +<​code>​
 +func f() {
 +    foo := func(s string) {
 +        fmt.Println(s)
 +    }
 +
 +    foo("​Hello World!"​)
 +}
 +</​code>​
 +
wiki2/go_useful.1566298748.txt.gz · Última modificación: 2020/05/09 09:25 (editor externo)