亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
new()を使用するタイミング
いつ使用するかmake()
重要な違いの概要
ホームページ バックエンド開発 Golang goのmake()とnew()の違いは何ですか?

goのmake()とnew()の違いは何ですか?

Jun 19, 2025 am 01:00 AM
go

Goでは、new()を使用して任意のタイプにゼロ値のポインターを割り當(dāng)てて返すために、make()はスライス、マップ、およびチャネルの初期化に特に使用されます。特定の違いは次のとおりです。1。new(t)はメモリを割り當(dāng)て、 *tタイプポインターを返します。 2.make()は、スライス、マップ、およびチャンタイプにのみ使用されます。メモリを割り當(dāng)てるだけでなく、內(nèi)部構(gòu)造設(shè)定を?qū)g行して、これらのタイプを直接使用できるようにします。 3.New()ポインターを返し、make()は実際のタイプのポインター以外のインスタンスを返します。 4.New()はあらゆるタイプに適しています。Make()は特定の組み込みタイプにのみです。 2つは異なる用途を持ち、交換可能ではありません。

goのmake()とnew()の違いは何ですか?

goでは、 make()new()はどちらも割り當(dāng)てに使用される組み込み関數(shù)ですが、異なる目的に役立ち、異なるコンテキストで使用されます。それぞれをいつ使用するかを理解することは、効果的なGOコードを作成するための鍵です。


new()を使用するタイミング

new(T)は、タイプTのメモリを割り當(dāng)てるために使用され、そのタイプのゼロ値へのポインターを返します。デフォルトに設(shè)定する以外に値を初期化することはありません(整數(shù)の場合は0、ブール人の場合はFALSE、ポイントの場合はありません)。

例えば:

 p:= new(int)
fmt.println(*p)//印刷:0

これにより、初期値は0の整數(shù)へのポインターが作成されます。通常、構(gòu)造體または基本タイプへのポインターが必要な場合は、特に手動(dòng)で初期化して自分自身をゼロにしないようにしたい場合は、new new()を使用します。

一般的なケースは次のとおりです。

タイプユーザーstruct {
    名前文字列
    年齢int
}

u:= new(user)
// uは、空の名前と年齢0のユーザーへのポインターになりました

覚えておいてください、 new()あなたにポインターを提供します、そしてそれはメモリからゼロになるだけです - それはカスタム初期化ロジックを?qū)g行しません。


いつ使用するかmake()

make()は、スライス、マップ、およびチャネルの初期化専用です。これらのタイプには、単にメモリを割り當(dāng)てるだけではありません。使用可能な內(nèi)部構(gòu)造のセットアップが必要です。

任意のタイプにmake()を使用することはできません。これらの3つの組み込みタイプでのみ動(dòng)作します。

例:

 s:= make([] int、0、5)//長さ0のスライス、容量5
m:= make(map [string] int)//使用する空のマップ
c:= make(chan int)//バッファーされていないチャネル

make()を使用すると、これらのタイプが適切に初期化されていることを確認(rèn)して、スライスへのアプリが開始したり、値をマップに入れたり、すぐにチャネルを介してデータを送信したりできます。

このようなmake()なしでそれらを宣言しようとした場合:

 var m map [string] int
m ["key"] = 42 //パニック:nilマップへのエントリへの割り當(dāng)て

マップが初期化されていなかったため、ランタイムエラーが発生します。


重要な違いの概要

  • 目的

    • new()はメモリを割り當(dāng)て、それをゼロにします。
    • make()特定のタイプ( slice 、 map 、 chan )を初期化して、使用する準(zhǔn)備ができています。
  • 返品タイプ

    • new(T)返品*T 。
    • make()実際のタイプ( T 、 *Tではなく)を返します。
  • 使いやすさ

    • new()任意のタイプで動(dòng)作します。
    • make() 、スライス、マップ、およびチャネルでのみ動(dòng)作します。

そのため、両方ともメモリ管理に役立ちますが、それらは交換可能ではありません - 特定のタイプのより複雑なセットアップをmake()し、 new()単純に割り當(dāng)てられます。


それは基本的にそれです。彼らはそれぞれ獨(dú)自の役割を持っています。そして、あなたがどのような種類のタイプを扱っているかを知ったら、それらを選択することは簡単になります。

以上がgoのmake()とnew()の違いは何ですか?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GOアプリケーションの標(biāo)準(zhǔn)プロジェクトレイアウトは何ですか? GOアプリケーションの標(biāo)準(zhǔn)プロジェクトレイアウトは何ですか? Aug 02, 2025 pm 02:31 PM

答えは次のとおりです。GOアプリケーションには必須のプロジェクトレイアウトがありませんが、コミュニティは一般に、保守性とスケーラビリティを改善するために標(biāo)準(zhǔn)構(gòu)造を採用しています。 1.CMD/プログラムの入り口を保存します。各サブディレクトリは、CMD/MyApp/Main.goなどの実行可能ファイルに対応しています。 2.內(nèi)部/保存プライベートコード、外部モジュールによってインポートすることはできず、ビジネスロジックとサービスのカプセル化に使用されます。 3.PKG/ストア他のプロジェクトをインポートするための公に再利用可能なライブラリ。 4.API/オプションでOpenapi、Protobuf、およびその他のAPI定義ファイルを保存します。 5.Config/、Scripts/、およびWeb/Store構(gòu)成ファイル、スクリプト、Webリソース。 6.ルートディレクトリにはgo.mod and go.sumが含まれています

Goのラインごとにファイルをどのように読みますか? Goのラインごとにファイルをどのように読みますか? Aug 02, 2025 am 05:17 AM

bufio.scannerを使用することは、行ごとにファイルを読み取るために最も一般的で効率的な方法であり、大きなファイル、ログ解析、構(gòu)成ファイルなどのシナリオを処理するのに適しています。 1. os.openを使用してファイルを開き、deferfile.close()を介してファイルを閉じるようにしてください。 2. bufio.newscannerを介してスキャナーインスタンスを作成します。 3。fals scanner.scan()を呼び出して、falsが返されるまで行ごとに読み取り、ファイルの最後に到達(dá)したりエラーが発生したりすることを示します。 4。scanner.text()を使用して、現(xiàn)在のラインコンテンツ(newline文字を除く)を取得します。 5.ループが終了したら、scanner.err()を確認(rèn)して、読み取りエラーをキャッチします。この方法にはメモリ効果があります

GO Webアプリケーションでルーティングをどのように処理しますか? GO Webアプリケーションでルーティングをどのように処理しますか? Aug 02, 2025 am 06:49 AM

GOアプリケーションでのルーティングは、プロジェクトの複雑さに依存します。 1.標(biāo)準(zhǔn)のライブラリNet/HTTPSERVEMUXは、外部依存関係のない単純なアプリケーションに適しており、軽量ですが、URLパラメーターと高度なマッチングをサポートしていません。 2。CHIなどのサードパーティルーターは、モジュラー設(shè)計(jì)に適したミドルウェア、パスパラメーター、ネストされたルーティングを提供します。 3. GINは、APIやマイクロサービスに適した優(yōu)れたパフォーマンス、組み込みのJSON処理、リッチ機(jī)能を備えています。柔軟性、パフォーマンス、または機(jī)能統(tǒng)合が必要かどうかに基づいて選択する必要があります。小規(guī)模プロジェクトは標(biāo)準(zhǔn)的なライブラリを使用しており、中型および大規(guī)模プロジェクトはChiまたはGinを推奨し、最終的に単純なものから複雑なものまでスムーズな拡大を達(dá)成します。

GOのビルド制約とは何ですか? GOのビルド制約とは何ですか? Jul 31, 2025 am 02:53 AM

buildconstraintsingoareCommentslike // go:build controlfileinclusionduring beasedonconditionssuchasos、Architecture、orcustomtags.2.theyareplacededbeartagedeclaration withablanklanklinedinvet -bootbooleanoperatoratoratoratoraturationslikeRikeRikeLikeLikeLikeRikeRikeRiveRationは、

GOでコマンドラインフラグをどのように解析しますか? GOでコマンドラインフラグをどのように解析しますか? Aug 02, 2025 pm 04:24 PM

Goのフラグパッケージは、コマンドラインパラメーターを簡単に解析できます。 1. flag.type()を使用して、文字列、整數(shù)、ブール膜などのタイプフラグを定義します。 2。flag.typevar()を介して変數(shù)にフラグを解析して、ポインター操作を避けることができます。 3。flag.parse()を呼び出した後、flag.args()を使用して後続の位置パラメーターを取得します。 4。flag.valueインターフェイスを?qū)g裝すると、カスタムタイプをサポートして、ほとんどの単純なCLI要件を満たすことができます。複雑なシナリオは、SPF13/COBRAライブラリに置き換えることができます。

IF-ELSE IN GOのような條件付きステートメントをどのように使用しますか? IF-ELSE IN GOのような條件付きステートメントをどのように使用しますか? Aug 02, 2025 pm 03:16 PM

GoのIF-Elseステートメントは括弧を必要としませんが、巻き毛の裝具を使用する必要があります。スコープを制限する場合の変數(shù)の初期化をサポートします。條件は、エラーチェーンを介して審査できます。これは、エラーチェックによく使用されます。可変宣言と條件の組み合わせは、コードのシンプルさとセキュリティを改善することができます。

Goで定數(shù)をどのように宣言しますか? Goで定數(shù)をどのように宣言しますか? Aug 02, 2025 pm 04:21 PM

GOでは、定數(shù)はconstキーワードを使用して宣言され、値を変更することはできず、タイプまたはタイプのものではありません。 1. constpi = 3.14159などの単一の定數(shù)宣言。 2。ブロック內(nèi)の複數(shù)の定數(shù)宣言はconst(pi = 3.14159; language = "go"; isCool = true)などです。 3。constsecondsinminuteint = 60などの明示的なタイプ定數(shù)。 4. IOTAを使用して、const(日曜日= IOTA;月曜日、火曜日)などの列挙値を生成し、値0、1、および2を順番に割り當(dāng)て、IOTAはビット操作などの式に使用できます。定數(shù)はコンパイル時(shí)に値を決定する必要があります。

Goはどのように並行性を処理しますか? Goはどのように並行性を処理しますか? Jul 31, 2025 am 09:43 AM

GoHandlesCurrencyThroughGoroutinesAndChannels、enableSingsImple、safe、andscalableconcurrentprogramming.1.goroutinesAreLightweightThreageThreageThegoruntime、Startingthegokeyword、andrequireminimalresourcesdueTosmall、grablestacks.2.Channelsfacilit

See all articles