GO言語でunexpected directory layoutと表示された時の対処法

問題

go run main.goなどでプログラムを実行した際に以下のようなエラーが出ることがあります。

$ go run main.go
unexpected directory layout:
    import path: _/Users/rayleigh865/Documents/src/code/web/api
    root: /Users/rayleigh865/Documents/src
    dir: /Users/rayleigh865/Documents/src/code/web/api
    expand root: /Users/rayleigh865/Documents/
    expand dir: /Users/rayleigh865/Documents/src/code/web/api
    separator: /

解決方法

このようなエラーが出た場合はimportの部分が相対参照になっているのが原因です。例えば

package main
import (
  "fmt"
  "../web/api"
)

となっていたら以下のような絶対パス($GOPATH/src以下から書く)にすると直ります。

package main
import (
  "fmt"
  "code/web/api"
)