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

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

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

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

Q&A

解決済

1回答

237閲覧

Go言語テスト/ ディレクトリ先が正しくない為に起きるエラー(?)

monica0

総合スコア6

Go

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

0グッド

0クリップ

投稿2024/02/21 16:43

編集2024/02/21 16:48

実現したいこと

alib.goをmain.go で実行するためにディレクトリ構成の指定を正しく行いたい

発生している問題・分からないこと

ターミナル上directoryのstd にありませんと表示されます

エラーメッセージ

error

1main.go:5:2: package golang_udemy/lesson/alib is not in std (/Users/monica/.goenv/versions/1.21.5/src/golang_udemy/lesson/alib)

該当のソースコード

package main import ( "fmt" "golang_udemy/lesson/alib" ) /* func main(){ //エントリーポイントmain関数が実行される場所 fmt.Println("HelloWorld") } */ //cd コマンドを使って移動しまくる //lsでディレクトリ内を見る /*私の場合>Desktop>golangUdemrフォルダ> [lsで実行したいテキストファイル確認]main.goを発見>ターミナルでgo run main.go実行 HelloWorldが出力されたらOK*/ //テスト func IsOne(i int)bool{ if i == 1 {//iに1代入 return true//1であった場合 }else{ return false//それ以外の場合 } } func main(){ fmt.Println(IsOne(1)) fmt.Println(IsOne(0)) s :=[]int{1,2,3,4,5} fmt.Println(alib.Average(s)) }
package alib func Average(s []int) int{ //アベレージ関数?整数のスライスを渡すと整数値を返す total := 0 //totalを0としてfor文で回してトータルに値を追加していく処理 for _,i:=range s{ total += i } return int(total / len(s)) //トータルがスライスの要素数を割った/平均値となり、整数に戻して性数値を返す } //main.goの方で実行処理を記載

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

desk top
├golang_udemy/
├ lesson/
└ main.go/
└ main_test.go/
├ alib/
└ alib.go/

ディレクトリの構成にalibフォルダを追加致しました。

エラー構文部分であるmain.goソースコードのimport内に前後に別フォルダ名を記述し試みましたがダメでした

"golang_udemy/lesson/alib"

※stdはそもそも何なのか?>検索したところ曖昧エラー?
※ディレクトリの指定エラーだと考えている為又は変にいじるとエラーが重複してしまいそうなので、コード内のソースはあまりいじっておりません。
お恥ずかしながら何度見返してもimortの何処が間違えているのか判定先が分かりませんお助けいただけると幸いです。

補足

特になし

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

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

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

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

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

ikedas

2024/02/22 09:38

現状の質問内容では、意味のある回答ができる人はいないと思います。 質問文には、「どんな操作をして」「どんなことが画面に表示されたか」を、省略や要約をせず自分の解釈を交えず、実際に行った順番通りに、記してください。 もしもすべてをおぼえていないとか順番もあやふやだということなら、これまでに作成したすべてのファイルやディレクトリを削除し、最初からしっかり記録をとりながらやり直してください。 念のためですが、「記してください」というのはこのコメント欄に書いて欲しいということではありません。質問文を編集して書いてください。
guest

回答1

0

自己解決

desk top
├golang_udemy/
├ lesson/
└ main.go/
└ main_test.go/
├ alib/
└ alib.go/

go test ./alibを、main.goにて相対パスで実行する際
main_test.goコード内の誤字脱字によるエラーでした。

lsにて現在alibフォルダ内に居た為ディレクトリ先で操作した手順
cd alib フォルダ内 alib.go alib_test.goから
cd ..で1つディレクトリ戻り 
lessonフォルダ内 alib main.go main_test.go
以降下記を実行

go

1go test ./alib 

go test ./alib を実行するとこちらのエラーが表示されました

go

1alib/alib_test.go:2:8: package testting is not in std (/Users/氏名/.goenv/versions/1.21.5/src/testting) 2 3alib/alib_test.go:7:1: expected declaration, found fanc

エラーを元に誤字脱字を正しく修正したコードが下記

main_test.go

1package alib 2import "testing" 3 4var Debug bool = false 5 6//テストの内容 7func TestAverage(t *testing.T){ 8 if Debug{//Debugがtruseであればスキップ 9 t.Skip("スキップします") 10 } 11 v := Average([]int{1, 2, 3, 4, 5}) 12 if v !=3 { 13 t.Errorf("%T != %T", v, 3) 14 } 15} 16//cd ..で1つディレクトリ戻る 17// go test ./alibで相対パス実行

結果

ok example/hello/lesson/alib 0.422s

OKと出ていたのでこのテストがパスしたという風に出力されてます。

go test -v ./alibで詳細を確認

=== RUN TestAverage --- PASS: TestAverage (0.00s) PASS ok example/hello/lesson/alib 0.311s monica@monicanoMacBook-puro lesson %

Test Averageというテストを実行後パスして出力されている
なので、okと表示されており正しいとなりました。

投稿2024/02/23 09:53

編集2024/02/23 09:54
monica0

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問