Bug spot game
Today, we are going to play a game. You have to look at some Go code, and spot the bug.
- Don’t run the code; it’s a mental game.
- Double quotes are stylised in Medium, so that’s never the answer.
- Answers are listed at the bottom in Base64 (see how Drew LeSueur dealt with this)
NUMBER ONE: Errors in errors
package main
import (
“errors”
“fmt”
)
func main() {
err := errors.New(“emit macho dwarf: elf header corrupted”)
if err != nil {
fmt.Printf(err)
}
}---
Zm10LlByaW50ZiBuZWVkcyBmb3JtYXR0aW5nIGFyZ3VtZW50cyAtIGl0IHNob3VsZCBoYXZlIGJlZW4gZm10LlByaW50
NUMBER TWO: Wait a minute
select {
case m := <-c:
handle(m)
case time.After(5 * time.Minute):
fmt.Println("timed out")
}---
dGltZS5BZnRlciByZXR1cm5zIGEgY2hhbm5lbCwgd2hpY2ggd2UgbmVlZCB0byByZWNlaXZlIGZyb20uIFNob3VsZCBiZSBjYXNlIDwtIHRpbWUuQWZ0ZXIoNSAqIHRpbWUuTWludXRlKQ==
NUMBER THREE: Pretty unique
// UniqueStrings gets an array containing unique stirngs.
func UniqueStrings(s ...string) []string {
var strs []string
loop:
for _, str := range s {
for _, foundStr := range strs {
if str == foundStr {
continue
}
}
strs = append(strs, str)
}
return strs
}
---
aXQgc2hvdWxkIGJlIGBjb250aW51ZSBsb29wYCAtIG90aGVyd2lzZSB0aGUgaW5uZXIgbG9vcCBpcyB3aGF0IGlzIGNvbnRpbnVlZCwgbm90IHRoZSBvdXRlciAtIGFuZCB0aGUgc3RyaW5ncyB3b24ndCBiZSB1bmlxdWUu
NUMBER FOUR: What’s Jason pointing at?
package main
import (
“bytes”
“encoding/json”
“log”
“os”
)
func main() { type Road struct {
Name string
Number int
}
roads := []Road{
{“Diamond Fork”, 29},
{“Sheep Creek”, 51},
}b, err := json.Marshal(roads)
if err != nil {
log.Fatal(err)
}
var out bytes.Buffer
json.Indent(out, b, “=”, “\t”)
out.WriteTo(os.Stdout)
}
---
Y2Fubm90IHVzZSBvdXQgKHR5cGUgYnl0ZXMuQnVmZmVyKSBhcyB0eXBlICpieXRlcy5CdWZmZXIgaW4gYXJndW1lbnQgdG8ganNvbi5JbmRlbnQuIFlvdSBuZWVkIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2Ygb3V0Lg==
NUMBER FIVE: Scanning
package main
import (
“bufio”
“fmt”
“os”
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err = scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, “reading standard input:”, err)
}
}---
V2UgZGlkbid0IGRlZmluZSBlcnJvciBiZWZvcmUgLSBzbyB3ZSdkIG5lZWQgdG8gdXNlIDo9IHNjYW5uZXIuRXJyKCk=
HARD bonus question
Stretch goal…
NUMBER SEVEN: Trick question
package main
import “fmt”
func main() { var card = struct{
Suit string
Value int
}{“Hearts”,5}fmt.Println(“The card is:”, *(&card))
}
---
VGhpcyB3YXMgYWN0dWFsbHkgcXVlc3Rpb24gTlVNQkVSIFNJWCAtIHRvbGQgeW91IGl0IHdhcyBhIHRyaWNrIHF1ZXN0aW9uIDopIE1lcnJ5IGZ1Y2tpbmcgQ2hyaXN0bWFzLiAoWW91J3JlIGFsbG93ZWQgdG8gc3dlYXIgb25saW5lIHByb3ZpZGVkIGl0J3MgQmFzZTY0IGVuY29kZWQp