<option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
<output id="tpnx7"></output>
<output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    首页 > 上网技巧 > 电脑小技巧 > golang中结构体的初始化方法

    golang中结构体的初始化方法

    时间:2019-03-13 14:29 作者:QQ地带 我要评论

    目录

    1、自定义一个结构体

    type Vertex struct {

        X, Y float64

    }

    2、初始化方法-指针:

    rect1 := new(Vertex )

    rect2 := &Vertex {}

    rect3 := &Vertex {1, 2}

    rect4 := &Vertex {X:100, Y:200}

    注意: 这几个变量全部为指向Rect结构的指针(指针变量),因为使用了new()函数和&操作符.

     

    3、初始化方法-类型实例

    a := Rect{}

    b := Rect{3, 4}

    c := Rect{X=5, Y=6}

    则表示这个是一个Rect{}类型.两者是不一样的.

     

    4、区别

    下面这个例子能展现之间区别:

     

    package main

    import "fmt"

     

    type Vertex struct {

            X, Y float64

    func main() {

        rect1 := new(Vertex)

        rect2 := &Vertex{1, 2}

        fmt.Printf("%v  %T  %v \n",  rect1,  rect1,  *rect1)

        fmt.Printf("%v  %T  %v \n",  rect2,  rect2,  *rect2)

     

        rect3 := Vertex{X: 5, Y: 6}

        fmt.Printf("%v  %T\n",  rect3,  rect3)

     

    }

    // 输出:

    /*

    &{0 0}  *main.Vertex  {0 0} 

    &{1 2}  *main.Vertex  {1 2} 

    {5 6}  main.Vertex

    */

    从结果中可以清楚的看到两者的不同.

     

    用 new 分配内存 内建函数 new 本质上说跟其他语言中的同名函数功能一样:new(T) 分配了零值填充的 T 类型的内存空间,并且返回其地址,一个 *T 类型的值。用 Go 的术语说,它返回了一个指针,指向新分配的类型 T 的零值。记住这点非常重要。 这意味着使用者可以用 new 创建一个数据结构的实例并且可以直接工作。

     

    务必记得 make 仅适用于 map,slice 和 channel,并且返回的不是指针。应当用 new获得特定的指针。


    标签: golang
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%

    Google提供的广告

    广东十分快乐开奖结果
    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>