gomud/docs/learning.md

71 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

# learning
stuff we learned along the way
## 2021-12-28
Stuff i learned about go
- `:=` short assignment, infers type: `x := 4`. vs "long" assignment: `var x int; x = 4`
- expressive ifs: declare, assign, evaluate
```
if x := isBar(); x > 10 {
println("big number")
} else {
println("it's kind of small")
}
```
- `defer` wrapup (e.g. `conn.Close()`)
- data structures are array (fixed), slice (variable), and channel
- mulitiple returns. common convention:
```
foo, err := bar()
if err != nil {
return err
}
```
- pointers 😬
- use `make` to make arrays, slices, channels
- `for` is the only loop.
- structs and interfaces. here's a pair type:
```
type pair struct {
x, y int
}
```
and here's a toString interface:
```
type Stringer interface {
toString() string
}
```
and here's adding a method to a struct to implement the interface:
```
func(p pair) toString() string {
return fmt.Sprintf("(%d, %d)", p.x, p.y)
}
```
and here's using the compiler to check the interface:
```
var p Stringer = pair{3, 4}
```
resources
- https://learnxinyminutes.com/docs/go/
- https://www.youtube.com/watch?v=Eb1Q98PmyLQ
- https://www.youtube.com/watch?v=oyKrI8e1-9U&t
- https://pkg.go.dev/net/http
- https://github.com/josa42/coc-go