- 「Go言語で作るインタプリタ」のコードを写経する
- https://www.oreilly.co.jp/books/9784873118222/
- Go言語はTour Goをほんの少しやっただけ。
go test ./lexer
go: cannot find main module, but found .git/config in ~/monkey
to create a module there, run:
go mod initテストは動かない。なるほど、go mod initとすれば良いのかと
go mod init
go: cannot determine module path for source directory ~/monkey (outside GOPATH, module path must be specified)
Example usage:
'go mod init example.com/m' to initialize a v0 or v1 module
'go mod init example.com/m/v2' to initialize a v2 module
Run 'go help mod init' for more information.- だめだった。色々見ると、go mod initの次にモジュール名を付けるべきらしい。とりあえず作業フォルダのトップレベルの名前を入れると良いっぽい。
- 今回であれば monkeyとなる。そうすると、importで、monkey/tokenのように、monkeyから指定することができるようになった。
cd monkey
go mod init monkey
go: creating new go.mod: module monkey満を持してのtest実行
go test ./lexer
$GOPATH/go.mod exists but should notあら?$GOPATHとやらはいらないのかな?良く分からんが外してみよう。
unset GOPATH
go test ./lexer
# monkey/lexer [monkey/lexer.test]
lexer/lexer_test.go:31:11: l.NextToken undefined (type *Lexer has no field or method NextToken)
FAIL monkey/lexer [build failed]
FAIL正しいのか、まだ分からないけれど、テストが失敗するところまではこれた。