71 lines
1.4 KiB
Markdown
71 lines
1.4 KiB
Markdown
|
# 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
|