Go中的struct初始化和方法声明

时间:2015-08-14 09:48:53

标签: struct go

我是Go的新手,对结构很好奇。让我们定义一个结构select id, events from msql where id < '05' group by id order by id desc limit 1

T
  1. 我见过不同类型的struct初始化。有什么区别?

    type T struct {
        size int
    }
    
  2. 以及两种方法声明:

    new(T)     // 1
    T{size:1}  // 2
    &T{size:1} // 3
    

    什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

  1. 分配
  2. new和&amp; T {size:1}返回* T

    T {size:1}返回T

      

    内置函数new采用类型T,在运行时为该类型的变量分配存储,并返回指向它的类型* T的值。变量初始化,如初始值部分所述。

    2

      

    任何其他命名类型T的方法集由接收器类型为T的所有方法组成。相应指针类型* T的方法集是带接收器* T或T的所有方法的集合(也就是说,它还包含T)的方法集。

    var pt * T

    var t T

      

    func(r * T)area()int

    你可以使用pt.area()或t.area()

      

    func(r T)area()int

    你可以使用t.area(),不能使用pt.area()

    通常我们使用func(r * T)area()int