私はGoLanguageでプロジェクトをやっていて、JetbrainsによるGoLandをIDEとして使用しています。 GoLandは、IDEエラーメッセージ(「未解決の参照」))を表示しますが、コンパイルと実行は正しく行われます。
これは、stackoverflow( Go-structのスライスに追加 )で私が見つけたいくつかのコードの類似した(しかしより単純な)例です。同じエラーメッセージが表示されます。しかし、明らかに私は上記の数行だけでメソッドを実装しました。
_package main
import (
"fmt"
)
type MyBoxItem struct {
Name string
}
type MyBox struct {
Items []MyBoxItem
}
func (box *MyBox) AddItem(item MyBoxItem) {
box.Items = append(box.Items, item)
}
func main() {
item1 := MyBoxItem{Name: "Test Item 1"}
item2 := MyBoxItem{Name: "Test Item 2"}
box := MyBox{}
box.AddItem(item1)
box.AddItem(item2)
// checking the output
fmt.Println(len(box.Items))
fmt.Println(box.Items)
}
_
box.AddItem(item1)
およびbox.AddItem(item2)
は、エラーとして赤でマークされます。カーソルをその上に移動すると、(_unresolved reference "AddItem"
_)と表示されます。しかし、コードはコンパイルされて実行されます。これが他のスタックオーバーフローの問題に対する解決策だったので、コードが間違っているとは思いません。さらに、私はそれに間違いを見つけることができません。
誰かがお手伝いできますか?どうもありがとう
[編集:私はリモートサーバーからコードを読み込み、プライベートPCでローカルに編集します。変更が完了したら、それをリモートサーバーにアップロードし(「Browse Remote Host」などのGoLandsツールを使用)、そこでビルドしてコンパイルします。同じコードを使用してローカルで試した後、エラーメッセージが表示される場合と表示されない場合があります。私は完全に混乱しています]
同じ問題が発生し、奇妙に修正されました。コーディングを続行するために、プロジェクトをvscode
にインストールして開きました。gopls
という拡張機能のインストールを開始しました。インストールが完了したら、GoLandに戻ってプロジェクトを閉じましたが、インデックス作成が完了するのを待ちました。突然、参照が緑色になりました。
GoLand 2019.3.1で問題を再現できません。それにアップグレードすることをお勧めします。
それでも問題が解決しない場合は、問題が発生した場所を説明してください。スクリーンショットで確認できるように、通常のプロジェクトファイルではなく、Scratchファイルがあるように見えます。