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