《初心者必読》Go言語におけるnew関数とmake関係の違いを整理する

Go

new関数

メモリ領域を確保しそのアドレスを返す

new関数はメモリ領域を確保して、確保した領域の先頭アドレスを返します。型の制限はなく、どんな型でも指定された型のメモリ領域を確保します。確保された領域のそれぞれの箱は初期化されていません。よってゼロ値が入ります。実際のプログラムを読んで確認してみます。まずはnew関数がアドレスを返すことを確認します。型は適当にint型とかを指定してみます。

new関数がアドレスを返していることが確認できました。hoge1とhoge2の間に8バイトの感覚が空いていることから64ビットのint型の領域が確保されていることが確認できます。またintのゼロ値0が設定されているかも確認してみましょう。

領域内の値はゼロ値が入っています。

make関数

初期化された領域への参照を返す

makeは初期化された領域への参照を返します。既に値が入っている、make関数が対応する型はslice,map,chanelのみです。他の型はmake関数では扱うことができません。ではmake関数を使ったプログラムを見てください。

make関数によって初期化されたmap型の参照が変数mに渡されていることが確認できます。ちなみにmap型は初期化されていない場合、新しいキーと値を割り振るとエラーになります。

new関数とmake関数の違い

初期化しないと初期化する

先ほど説明した通り、「new関数は初期化しない」「make関数は初期化する」という違いがあります。

型の制限

new関数は型の制限はありませんが、make関数はslice,map,chanel型しか受け付けません。なのでint型やstring型といった基本型をmake関数を使って領域を確保するという場面はありえません。

今回の記事は以下のサイトを参考にしました。

new() vs make()

番外編:働くエンジニアにおすすめアイテム3撰

記事の内容とは別に、日々エンジニアの業務を行う上で役に立っているアイテムを紹介します。どれも実際に使って良いと思ったものだけ紹介していますのでその点はご安心ください。

目の保温マッサージ

普段の業務で一番疲れる目を癒すために目元マッサージャーを毎日使っています。保温とマッサージを自動でしてくれるので、終わった後は血行が良くなり、翌日の目の疲労が激減します。また睡眠の質もあがるのでディスプレイと睨めっこの職業の方は必須アイテムだと思ってます。(笑)

座っている時の負担を減らす

8時間働くとして、その時間の殆どが椅子に座っている状態になるのがエンジニアの宿命です。椅子の性能が低いと身体に余計な負荷を掛けることとなり、良い椅子に座っている人と、そうでない椅子に座っている人にかかる1日の負担はかなり大きいです。ですので、身体への負荷を考えて、できるだけ良い椅子に座るべきです。とは言っても会社の椅子は既に決まっているので以下のクッションを購入することをおすすめします。体を包み込むようなフォールド性があり、疲労や腰の痛みなどが激減します。

自宅での作業効率をあげる椅子

最近購入したのがゲーミングチェアです。楽天ゴールドカードを持っている私は、Amazonではなく楽天市場でこの機種と似たようなものを購入しました。価格帯はほぼ同じで、このゲーミングチェアはAmazon内での評判も良いみたいですし、おすすめです。その理由は作業し終わった後の疲労感が異なり、座り心地もホールド感があって最高ですし、見た目がかっこいいからです。予算に余裕のある方は購入してみてはいかがでしょうか?

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。スキルの高いエンジニアは極々当たり前にしっている知識だとおもいますが、そうでない方はエンジニアとして最低限知らないとまずい知識ですのでどこかで購入し、読むことをお勧めします。

筆者
筆者

今回の記事の内容は以上で終了です。最後まで読んでくれてありがとうございます。また技術、経済、株式投資などのことを Twitter でも呟いていますので良かったらフォローよろしくお願いします。

タイトルとURLをコピーしました