10

私はGoogleの新しい言語Goを学んでいます。私はただ試しているところですが、変数を宣言して何もしないと、goコンパイラ(私の場合は8g
)が次の エラーでコンパイルに失敗することに気付きましたhello.go:9: error declared and not usedほとんどの言語コンパイラは未使用の変数について警告するだけで、それでもコンパイルできるので、私はこれに驚きました。

とにかく私はこれを回避することができますか?コンパイラのドキュメントを確認しましたが、この動作を変更するものは何もありません。errorこれがコンパイルされるように単に削除する方法はありますか?

package main

import "fmt"
import "os"

func main()
{
     fmt.Printf("Hello World\n");
     cwd, error := os.Getwd();
     fmt.Printf(cwd);
}
4

7 に答える 7

24

これを試すことができます:

cwd, _ := os.Getwd();

しかし、Jurilyの回答のようにエラーを保持する方が良いように思われるので、何か問題が発生したかどうかがわかります。

于 2009-11-11T23:22:34.883 に答える
11

これにより、開発が少し面倒になる可能性があります。変数が宣言されているが使用されていない (ただし使用される)コードを実行することがあります。

これらの場合、私はこれを簡単に行います:

fmt.Printf("%v %v %v",somevar1,somevar2,somevar3)

そこで、それらは「使用」されます。

開発中にこのエラーを抑制できる go ツールへのフラグを確認したいと思います。

于 2012-02-09T23:07:00.323 に答える
4

これは機能しますか?

cwd, error := os.Getwd();
if error == nil {
    fmt.Printf(cwd);
}
于 2009-11-11T23:12:02.407 に答える
3

「fmt」をインポートして使用すると、エラーの内容を確認できます

cwd, err := os.Getwd();
if err != nil {
    fmt.Printf("Error from Getwd: %s\n", err)
}

それは何を印刷しますか?

于 2009-11-12T05:03:10.513 に答える
1

本当にコンパイル エラーを取り除きたい場合は、'a = a' や 'error = error' などを試すことができます。

ここにいる何人かの人々からの議論は、そのようなコンパイルエラーは多くの粗雑さを防ぐので素晴らしいものであると述べているため、ほとんどの状況に当てはまるため、そのような構成を避ける必要があります. 一方で、私が書いたコードが実際にコンパイルされるかどうかをテストするのはとても好きです! その場合、宣言された変数と未使用の変数をすべて削除する必要はありません。したがって、'a = a' 構文はめったに使用せず、そこに残さないでください。

于 2011-08-10T19:12:17.770 に答える