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

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

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

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Q&A

解決済

1回答

3857閲覧

vscode:goのtestファイルでパスが通らない/定義へ移動しない

退会済みユーザー

退会済みユーザー

総合スコア0

Go

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

0グッド

0クリップ

投稿2021/06/04 10:40

編集2021/06/06 04:22

前提・実現したいこと

たとえば以下のようなディレクトリ構成だとします

/{home}/go ┗ /v12 ┗ /pjb ┗ /v13 ┗ /github.com ┗ /pja ┗ /.vscode ┗ /.launch.json ┗ /.settings.json ┗ /src ┗ src.go ┗ src_test.go ┗ /main ┗ main.go

このとき、vscodeでpjaを開いたとき、
0. すべてのファイルにおいて、import関数に書かれたパスに対してエラーが出ないようにしたいです。
0. 定義へ移動できるようにしたいです。

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

1. すべてのファイルにおいて、import関数に書かれたパスに対してエラーが出ないようにしたい

src_test.goのみに、import関数に書かれたパスに対して、以下のエラーメッセージが出ます。

could not import github.com/stretchr/testify/assert (cannot find package "github.com/stretchr/testify/assert" in any of /usr/lib/go-1.13/src/github.com/stretchr/testify/assert (from $GOROOT) /{home}/go/src/github.com/stretchr/testify/assert (from $GOPATH))

vscodeのターミナルで確認したGOROOT、GOPATHとは異なるパスが、下記のように表示されます。

linux

1$ go env GOROOT GOPATH 2/{home}/.anyenv/envs/goenv/versions/v13 3/{home}/go/v13

2. 定義へ移動できるようにしたいです。

main.go、src.goはimport関数にてエラーは出ませんが、
関数などの定義へ移動したくても
「定義は見つかりません」というエラーが出ます。

ソースコード(package~inportまで抜粋)

  • main.go

Go

1package main 2 3import ( 4 "log" 5 6 "pja/src" 7)
  • src.go

Go

1package src 2 3import ( 4 "log" 5 6 "github.com/go-sql-driver/mysql" 7)
  • src_test.go

Go

1package src 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "pja/src" 9)

試したこと

  1. ディレクトリごとにsetting.jsonを作成

都合上、pja、pjbでは使用しているGoのバージョンが異なります。
そのため、pjaにおいて、.vscodeというディレクトリを作成し、settings.jsonなどを入れました。

json

1※settings.jsonの中身 2{ 3 "files.eol": "\n", 4 "terminal.integrated.env.windows": { 5 "PATH": "${env:PATH}" 6 }, 7 "go.goPath": "/{home}/go/v13" 8}

2.vscodeでインストールした拡張機能「Go」のsettings.goの変更

1.を試して違うのかと思い、改めて拡張機能ごとの設定ファイルを変更しました。
しかし、追加した「"go.gopath": "/{home}/go/v13/src"」は他の文字よりも曇った色で表示されました。
エラーは表示されてはいません。

json

1{ 2 "terminal.integrated.shell.windows": "C:/Program Files/Git/bin/bash.exe", 3 "workbench.editor.enablePreview": false, 4 "window.zoomLevel": 0, 5 "go.alternateTools": { 6 7 "go-langserver": "gopls" 8 }, 9 // "go.languageServerExperimentalFeatures": { 10 // "format": true, 11 // "autoComplete": true 12 // } 13 "[go]": { 14 "editor.snippetSuggestions": "none", 15 "editor.formatOnSave": true, 16 "editor.codeActionsOnSave": { 17 "source.organizeImports": true 18 }, 19 }, 20 "gopls": { 21 "usePlaceholders": true, 22 "enhancedHover": true, 23 "useLanguageServer": true, 24 }, 25 "go.editorContextMenuCommands": { 26 27 "toggleTestFile": true, 28 "addTags": true, 29 "removeTags": false, 30 "fillStruct": false, 31 "testAtCursor": true, 32 "testFile": false, 33 "testPackage": false, 34 "generateTestForFunction": true, 35 "generateTestForFile": false, 36 "generateTestForPackage": false, 37 "addImport": true, 38 "testCoverage": true, 39 "playground": true, 40 "debugTestAtCursor": true, 41 "benchmarkAtCursor": false 42 }, 43 "go.gopath": "/{home}/go/v13/src", 44 "workbench.startupEditor": "none", 45 "go.toolsEnvVars": { 46 47 } 48}

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

windows10 pro
vscode 1.56.2
ubuntu 20.04

以上、お力いただけますと幸いです。
何卒よろしくお願いいたいます。

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

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

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

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

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

nobonobo

2021/06/05 06:21

import文をどの様に記述しているのかは重要な情報なので追記してほしい。
退会済みユーザー

退会済みユーザー

2021/06/06 06:45

ご指摘ありがとうございます。修正いたしました
guest

回答1

0

ベストアンサー

GOPATH直下のパッケージをインポートする事はできません。
$GOPATH/src/配下であるか、Goモジュール配下である必要があります。
指摘のフォルダ構成は一般的な物とはミスマッチなのでGoモジュールの参考ドキュメントを参考にしてみてください。
参考ドキュメント

投稿2021/06/06 05:03

nobonobo

総合スコア3367

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

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

退会済みユーザー

退会済みユーザー

2021/06/06 06:46

ご回答ありがとうございます。 ドキュメントを参考に構成を改めたところ、無事インポートされ定義にもジャンプできました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問