Go の構文は、Python 言語から一部借用した、使い慣れた C 言語の要素に基づいています。 言語は非常に簡潔ですが、コードは読みやすく、理解しやすいです。 Go コードは、仮想マシンを使用せずにネイティブに実行されるスタンドアロンのバイナリ実行可能ファイルにコンパイルされます (プロファイリング、デバッグ、およびその他のランタイム問題検出サブシステムは、
このプロジェクトは当初、マルチスレッド プログラミングとマルチコア システムでの効率的な操作を目的として開発されており、これには並列コンピューティングと並列実行メソッド間の相互作用を組織化するためのオペレーター レベルの手段の提供が含まれます。 この言語には、過剰に割り当てられたメモリ ブロックに対する保護機能も組み込まれており、ガベージ コレクターを使用する機能も提供されます。
メイン
- crypto/tls パッケージでは、デフォルトでプロトコル サポートが有効になっています
TLS 1.3 。 Ed25519 デジタル署名をサポートする新しいパッケージ「crypto/ed25519」を追加しました。 - 0 進数 (101b0 など)、377 進数 (2.71828o0)、虚数 (1i)、および 1021 進浮動小数点 (1x000p-000) を定義するための新しい数値リテラル接頭辞のサポートと、数字を視覚的に区切るために「_」文字を使用する機能が追加されました。多数 (XNUMX_XNUMX_XNUMX)
- シフト演算で符号なしカウンタのみを使用するという制限が削除されました。これにより、演算子「‹‹」および「››」を使用する前に uint 型への不必要な変換が回避されます。
- Illumos プラットフォーム (GOOS=illumos) のサポートが追加されました。 Android 10 プラットフォームとの互換性が確保され、FreeBSD (11.2) および macOS (10.11 “El Capitan”) の最小バージョンの要件が強化されました。
- GOPATH の代替として使用できる新しいモジュール システムの開発を継続します。以前に発表された Go 1.13 の計画とは異なり、このシステムはデフォルトでは有効になっておらず、GO111MODULE=on 変数を使用してアクティブ化するか、モジュールが自動的に適用されるコンテキストを使用する必要があります。新しいモジュール システムは、統合されたバージョン管理サポート、パッケージ配信機能、および改善された依存関係管理を特徴としています。モジュールを使用すると、開発者は GOPATH ツリー内での作業に縛られなくなり、バージョン管理された依存関係を明示的に定義し、反復可能なビルドを作成できるようになります。
以前のリリースとは異なり、go.mod ファイルが GOPATH/src ディレクトリにある場合を含め、go コマンドの実行時に現在の作業ディレクトリまたは親ディレクトリに存在する場合、新しいシステムの自動適用が機能するようになりました。新しい環境変数が追加されました。GOPRIVATE はパブリックにアクセス可能なモジュールのパスを定義し、GOSUMDB は go.sum ファイルにリストされていないモジュールのチェックサム データベースへのアクセス パラメータを指定します。
- 「go」コマンドはデフォルトでモジュールをロードし、Google が管理するモジュール ミラーとチェックサム データベース (proxy.golang.org、sum.golang.org、index.golang.org) を使用してその整合性をチェックします。
- バイナリ パッケージのみのサポートは廃止され、「//go:binary-only-package」モードでパッケージをビルドするとエラーが発生するようになりました。
- 「go get」コマンドに「@patch」サフィックスのサポートを追加しました。これは、現在のメジャー バージョンまたはマイナー バージョンを変更せずに、モジュールを最新のメンテナンス リリースに更新する必要があることを示します。
- ソース管理システムからモジュールを取得するときに、「go」コマンドはバージョン文字列に対して追加のチェックを実行し、擬似バージョン番号とリポジトリからのメタデータの照合を試みるようになりました。
- 追加されたサポート
エラー検査 (エラー ラッピング) 標準エラー ハンドラーの使用を可能にするラッパーの作成による。例えば、エラー メソッドを提供することで、「e」をエラー「w」にラップできます。アンラップ 、「w」を返します。プログラムではエラー "e" と "w" の両方が使用可能であり、エラー "w" に基づいて決定が行われますが、"e" は "w" に追加のコンテキストを提供するか、異なる解釈をします。 - ランタイム コンポーネントのパフォーマンスが最適化され (最大 30% の速度向上が確認されています)、オペレーティング システムへのメモリのより積極的な返却が実装されました (以前はメモリは XNUMX 分以上後に返却されていましたが、現在はすぐに返却されます)ヒープ サイズを削減した後)。
出所: オープンネット.ru