Golang-Detailed Go言語コード仕様

この記事は個人のパブリックアカウントから作成されました:TechFlow、オリジナルは簡単ではありません、注意を求めてください


今日はGolangトピックの第2部です。Goの言語仕様を見てみましょう。

今日の内容を続ける前に、質問に答えましょう。

一部の学生はバックグラウンドで私に尋ねました、なぜGolangは分散システムの開発により適しているのですか?Javaに勝る利点はありますか?

実際、この質問に答えるには、プロセス、スレッド、コルーチンなどに関するオペレーティングシステムの多くの概念など、多くの概念が含まれます。これらの内容を簡略化し、最も単純なスレッドの例を示します。Javaマルチスレッドの例を書いみましょう

public class MyThread implemnts Runnable {
    public void run() {
      System.out.println("I am a thread")
    }
}

public class Test {
    public static void main(String args[]) {
        MyThread thread1 = new MyThread();
        thread1.start();
    }
}

Golangをもう一度見てみましょう。

func run() {
    fmt.Println("I am a Thread")
}

func main() {
    go run()
}

そのような比較ははるかに簡単ですか?

Golang言語仕様

プログラマーの間の最大の違いの1つは、中括弧が書かれるべき行があり、別の行があり、一部はループ本体に続くことです。これらの2つのグループは2つの学校に分けられ、彼らは互いに際限なく戦い、多くのパラグラフを生み出しました。

スタイルを統一するために、多くの言語がコードスタイルを標準化しています。たとえば、Pythonは中括弧を削除し、スペースを使用してコードをインデントします。残念ながら、インデントに4つのスペースを使用する人もいれば、タブを使用する人もいます。

おそらく、Golangの開発者はコードスタイルの喧嘩に悩まされていたため、Golangは画期的なことを行い、コードスタイル厳密に制限しました。統一を強制するために全員が同じスタイルを使用する必要があります。そうしないと、毎分報告されます。したがって、特定の文法学習を行う前に、言語の仕様から始める必要があります。そうしないと、悪い習慣を身につけて修正したいと考えると、非常にコストがかかります。実際、コードスタイルを修正するのは難しいことです。正直なところ、私のコードスタイルはあまり良くありません。cur、pnt、node、u、vなどの単純な変数を常に使用しています。これは、acmをプレイすることによって残される癖でもあります。しばらく変更するのはかなり難しいでしょう。したがって、誰もが最初に良い習慣を身につけ、悪い習慣(霧)を私に残さなければなりません。

パッケージ仕様

Golangには多くの言語仕様があり、それらはさまざまな側面をカバーしています。それらの一部は一時的に利用できません。最初に基本を選択しましょう。1つはパッケージ仕様です。パッケージの場合、その名前はディレクトリと一致している必要があります。意味のあるパッケージ名を使用し、他の人が理解できない名前は使用しないでください。テストやユニットなど、標準ライブラリと競合することはできません。

2つ目は、パケットを引用する場合、相対パスではなく絶対パスを使用するように注意する必要があることです。

// wrong
import "../../../repo"

// correct
import "github.com/repo/package

もちろん、goimportツールインストールして、パッケージを自動的にインポートすることもできます。ただし、自動パッケージ導入にも問題があります。特に、ディレクトリに同じ名前のパッケージが2つある場合は、エラーが発生する可能性があり、注意が必要です。

コードスタイル仕様

Go言語では、_ではなくハンプ標準使用して変数に名前を付ける必要があると規定しています。Goでは、最初の文字は構造内の変数またはパッケージ内の関数publicを大文字にします。小文字の場合、それはprivateを意味し、特別な注意が必要です。私が最初に囲碁を書き始めたとき、私はそれに慣れていなかったので、穴を踏むのが一般的です。

golangには定数があります。golangの定数は、最初の文字を大文字にしたキャメルケース標準を使用します。たとえば、現在のアプリ実行環境を意味するapp_envという定数を開始する場合は、次のように定義する必要があります。

const AppEnv = "env"

もう一つのポイントは、Golangの設計者が行末にセミコロンを追加する必要ないと考えたため、コンパイラーが行末にセミコロンを自動的に追加する機能を追加したことです。追加できるかどうかはわかりますが、一般的には不要だと考えられています。したがって、一般的に言えば、ループ本体または判定条件を除いて、通常はセミコロンを記述しません。もちろん、1行に複数のステートメントを記述したい場合など、特別な場合があります。

var a int; var b float;
a = 3; b = 3.2;

もちろん、これを行うことは一般的にはお勧めできません。複数行に分割することをお勧めします。

もう1つのポイントは、golangのすべての変数とパッケージを使用する必要があるということです。使用されていないものを定義することは許可されていません。それ以外の場合は、エラーも報告されます。つまり、コードを書くときの注意を厳しく制限します。ほとんどの言語にはそのような制限はありませんが、golangには制限があるため、コードを書くときには注意が必要です。

もう1つのポイントは、中かっこです。golangでは、中かっこは、新しい行ではなく現在の行に記述されること厳密に制限されています。

// wrong
if expression 
{
  ...
}

// correct
if expression {
  ...
}

上記の例から、golangのifの後ろの条件が括弧囲まれていないことにも気づくことができます。これはPythonと同じです。しかし、JavaやC ++の作成に慣れている場合は、最初は快適ではないかもしれません。

最後のポイントは、golangのコード仕様検出ツールgolintは、すべての関数と構造体ヘッダーにコメントを付ける必要があることを規定しており、コメントの仕様も制限されていることです。コメントの仕様は、名前と説明を加えたものです。コメントが記述されていないか、標準化されていない場合、コードは実行できますが、Golint仕様の検出に合格しません。一般的に言って、会社の開発環境は制限されており、golint仕様を通過するコードのみをリリースに提出できます。

// HelloWorld print hello world
func HelloWorld() {
    fmt.Println("Hello World")
}

もう1つのポイントは、golang intやint32、int64などの暗黙の型変換をサポートしていないため、別の型として扱われることです。int32変数をint型に割り当てると、エラーが発生し、手動で変換する必要があります。もちろん、これによりコーディング時の作業が増えますが、精度の違いによって引き起こされる多くの問題も回避されます。

これらに加えて、golangは構造体の定義とエラー処理の仕様も定義しています。しかし、初心者にとっては、これらは現時点で理解されている必要があり、他のコンテンツは後で会うときに馴染みがあります。

コードスタイルに厳しいコード制限がある言語は、初心者にとっては苦痛かもしれません。覚えておくべきことは、文法を学ぶだけでなく、これらの仕様も理解する必要があるからです。しかし、慣れている、または仕事をしていると、これは実際に良いことであることがわかります。複数人によるコラボレーションのシナリオでは、誰もが同じ仕様に従うことで、コード交換とコラボレーションの効率が大幅に向上しますコードのスタイルが自分のものとは完全に異なる他の人のコードを見たことがあれば、これをより深く理解できると思います。

まとめ

オブジェクト指向の仕様の厳密さと去勢程度から、golangは新しい言語のようではなく、前世紀の古い学校の言語のスタイルです。しかし、Golangには、関数値が複数の結果を返すことを可能にする、匿名関数や一部の関数型プログラミング関数をサポートするなど、多くの新機能があります初心者の段階では、Pythonがあまりにも多く記述されており、動的言語に慣れているためか、かなり抵抗しました。しかし、この言語についての理解が深まるにつれ、これらのデザインコンセプトの背後にある考え方と知恵をますます発見し、徐々にそれを改善してきました。言語、これらの年の人気は不合理ではありません。

もう1つの重要な点は、golangは非常にユニークであるため、その背後にある意図について考えることがよくあるということです。この種の思考は、いくつかの情報を参照することと相まって、以前の思考に多くの盲点を見つけることができます。以前言語を勉強していたとき、なぜ言語デザイナーがこのようにデザインしなければならないのか決して考えませんでした。このような考え方は、言語自体の理解を深めるだけでなく、問題のあるシーンの考え方や理解を深めることもできます。エンジニアにとっては、後者の方がより重要です。

もちろん、これらのコンテンツは役に立たないと言えるので、画面の前でじっくりと体験してください。

みんながgolangの魅力を感じて、このプロセスの間に成長して元気づけられることを願っています!何かやりがいを感じた場合は、それを読むか再投稿しください。あなたの努力は私にとって非常に重要です。

ここに画像の説明を挿入

117件の元の記事を公開 61のような 10,000以上の訪問

おすすめ

転載: blog.csdn.net/TechFlow/article/details/105643808
おすすめ