現在、以下の構成

1
2
3
4
5
warbot-go
├ test
│ └ test.go
├ go.mod
└ hello.go

この状態でhello.goからtest.goをimportできない。
まず、保存しようとするとコードが消える

これはVSCodeに入れているGolintが消してるっぽい
ログには
Not able to determine import path of current package by using cwd: c:\Users\Minato86\repos\MyRepository\warbot-go and Go workspace:
と記録されていた。

まずは今の状況を振り返っておくと

  • go mod init warbot-goでmodを初期化済み
  • go envGO111MODULEはonになっている

というわけで、今はGo Modulesが使える環境が整っているはずです。

main.gotest.goは以下のようになっています

main.go

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
//ここに"warbot-go/test"をimportしたい
)

func main() {
fmt.Println("Hello, world.")
}

test.go

1
2
3
4
5
6
7
8
9
package test

import (
"fmt"
)

func Test() {
fmt.Println("test module ready.")
}

linterを無効にしてみる

2fd55a2ce3bace7661665a70d5dd51c9.png

VSCodeのワークスペース設定から、Lint On Saveをoffにしてみる。

結論からいうと、offにしたのに普通に実行された。
なんでや。と思ったら、どうやらこの動作はlinterの仕業ではなく、formatterの仕業みたい。

formatterを変えてみる

b373f1c941646a7873dc5913665eb082.png

デフォルトのgoreturnsではなく、gofmtに変えてみた。
結論から言えば、うまくいった。

1
2
3
4
5
6
7
8
9
10
11
package main

import (
"fmt"
"warbot-go/test"
)

func main() {
test.Test()
fmt.Println("Hello, world.")
}

消されずにこのように書くことができた。
また、普通に実行できた。

そういえば

Githubでリポジトリを公開する場合、こっちのほうが正しいっぽい

go mod init github.com/chipsnet/warbot-go

あとはimportもgithub.com/chipsnet/warbot-go/testに書き換える。

↓GoなんもわからんからDiscordBotを作っている
GitHub - Chipsnet/warbot-go: WARbot written in golang