質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

1回答

3398閲覧

【GO】goplsでの補完機能の設定でThe code in the workspace failed to compile.というエラーが出る。

noa-1129

総合スコア25

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2020/10/07 13:21

前提・実現したいこと

vscodeでgoの環境構築として補完機能を設定したいのですが、go拡張機能からエラーが出てしまいます。

発生している問題・エラーメッセージ

The code in the workspace failed to compile (see the error message below). If you believe this is a mistake, please file an issue: https://github.com/golang/go/issues/new. go [-e -json -compiled=true -test=true -export=false -deps=true -find=false -- ./]: exit status 1: go: cannot find main module, but found .git/config in /Users/noay to create a module there, run: cd .. && go mod init : packages.Load error

該当のソースコード

settings.json

"go.useLanguageServer": true, "[go]": { "editor.snippetSuggestions": "none", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": true, } }, "gopls": { "usePlaceholders": true, // add parameter placeholders when completing a function // Experimental settings "completeUnimported": true, // autocomplete unimported packages "watchFileChanges": true, // watch file changes outside of the editor "deepCompletion": true, // enable deep completion }, "go.toolsEnvVars": { "GO111MODULE": "on", },

試したこと

よくわからないままエラー文通りにcd .. && go mod initを試してみましたが、

go: cannot determine module path for source directory /Users (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 example.com/mこれとかやってみても

go: creating new go.mod: module example.com/m go: updating go.mod: open /Users/go.mod: permission denied

なんか権限の拒否で、結局何も変わらない...

補足情報(FW/ツールのバージョンなど)

vscode: バージョン: 1.49.3

goenv: 2.0.0beta11

go: 1.15.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

goplsというよりも,まずgoのプログラムを書くにあたってのモジュール専用のプロジェクト(フォルダ)を作ってあげないといけません.
goのモジュールの名前はたいてい<gitrepositoryの場所(github.comとか)>/<username>/<projectname>みたいな感じで作ることが一般です.

任意のところにgoを書くためのフォルダを作成してあげて,
そこで,go mod init <モジュールの名前(例: github.com/kmdkuk/go_playground)>みたいな感じで使うことが一般的だと思います.

また権限の話ですが,/Users/以下は,現在OSの中に存在しているユーザごとの$HOMEフォルダが作成される場所です. /Users/の下にファイルを置いたりするのは,root権限が必要なはずです.
そこに.なにかプログラムを書いていくのは,やめたほうが良いと思うので,

sh

1$ cd ~ #それか, `cd $HOME` とかでも良いですが, 2$ mkdir hogehoge 3$ cd hogehoge 4$ go mod init <任意のモジュールの名前> 5$ code .

みたいな感じでHomeの下にフォルダを作成してあげて,そこにmain.goなどを書いていけばgoplsなどの補完がうまいこと働くのではないでしょうか

Tutorial: Get started with Go - The Go Programming Language

投稿2020/10/07 22:43

kmdkuk

総合スコア141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noa-1129

2020/10/08 10:57

回答ありがとうございます!立て続けの質問になってしまうのですが、github.comディレクトリがないのですが、mkdir github.com/username/projectnameみたいに作ってしまえば良いのでしょうか?また、ご意見を参考に、もう一度調べ直してみたのですが、goを書くためのフォルダの作成について、./src下で作成しているのも多く見かけたのですが、どう違うのかもご教授いただければ幸いです!
kmdkuk

2020/10/10 08:24

go modって比較的最近Goに入ってきたコマンドでそれ以前は, GOPATHの下にモジュール名にあったフォルダ構造にしなければいけませんでしたが, GOPATHの外のどこでも書ける用になったのがgo modなので,任意の場所で動きます.
noa-1129

2020/10/10 13:35

そうなんですね!ありがとうございます。参考にして学習していこうと思います!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問