Security and Trust are Priceless

Some articles about security and trust: セキュリティやトラストなどに関して、情報を共有することを目的としています

Golangの相対パスでのimportは非推奨-プログラミング言語Goのサンプルコード:gopl.io/ch2/cf

春休み中にWeb開発がしたいので、ずっと積読していたプログラミング言語Goという書籍を読んで、練習問題等もやっていたのですが、練習問題2.1あたりで少し問題が出ました。 それはimportにおいて、相対パス指定した際にモジュールが読み込めないというエラーです。 相対パス指定はどうやら非推奨のようで、

go mod init [モジュール名]

等でgo.modファイルを作成して、importする際も

import "モジュール名/読み込みたいパッケージ名"

のようにするとうまくいきました。 詳しくは下のようなページを見た方が分かりやすいと思われます。

zenn.dev

プログラミング言語のサンプルプログラムのgopl.io/ch2/cf/main.goではimportにおいて

import(
    (省略)
    "gopl.io/ch2/tempconv"
)

というように相対パスを使っていましたので、私の環境においてmoduleが読み込めないというエラーを吐かれました。 これを修正するにはまず、ch2ディレクトリに移動して

#mainでも何でもいい
go mod init main

を打って、go.modを作ります。次に、cf/main.goでimport部分を

import (
    "ch2/tempconv"
    "fmt"
    "os"
    "strconv"
)

にすると動くようになります。

環境($GOPATH)によっては相対パスでも読み込めるかもしれませんが、相対パスが非推奨とされている以上、このサンプルコードも修正されてほしいなと思いました。 もし同じ本の同じコードでエラー吐いた方がおられ、このページに辿り付けた方がいれば、参考になればと思います。