golang中new和make區別

2022-09-06 11:12:17 字數 490 閱讀 1624

golang 中有兩個記憶體分配機制 :new和make,二者有明顯區別.

make:返回乙個初始化的例項,返回的是乙個例項,而不是指標,其只能用來初始化:slice,map和channel三種型別

package main

import (

"fmt"

)func main()

通過這個例子可以看出,當對slice,map以及channel進行初始化時,使用make比new方式要好,而其他形式的則利用new進行初始化.

初始化:

使用new進行初始化時只能是預設初始化,無法賦值.很多時候,預設初始化並不是乙個好主意,例如乙個結構體,預設值的結構體初始化並沒有多大用處,所以面對結構體初始化我們一般適用如下方式:

type rect struct 

rect3 := &rect

rect4 := &rect

這種初始化方式在golang中初始化結構體是十分常見的.

golang中make和new的區別示例詳解

前言 new 和 make 都可以用來分配空間,初始化型別,但是它們確有不同。new t 返回的是 t 的指標 new t 為乙個 t 型別新值分配空間並將此空間初始化為 t 的零值,返回的是新值的位址,也就是 t 型別的指標 t,該指標指向 t 的新分配的零值。p1 new int fmt.pri...

Golang中make與new有何區別?

一 前言 本文主要給大家介紹了go語言中函式new與make的使用和區別,關於go語言中new和make是內建的兩個函式,主要用來建立分配型別記憶體。在我們定義生成變數的時候,可能會覺得有點迷惑,其實他們的規則很簡單,下面我們就通過一些示例說明他們的區別和使用。二 變數的宣告 var i int v...

Golang的make與new的區別

make用於內建型別 map slice 和channel 的記憶體分配。new用於各種型別的記憶體分配。new的函式宣告 func new type type接受乙個引數,這個引數是乙個型別,分配好記憶體後,返回乙個指向該型別記憶體位址的指標。它同時把分配的記憶體置為零,也就是型別的零值。make...