gpt4 book ai didi

Go中的结构初始化和方法声明

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:23 25 4
gpt4 key购买 nike

我是 Go 的新手,对结构非常好奇。让我们定义一个结构 T

type T struct {
size int
}
  1. 我见过不同类型的结构初始化。有什么区别?

    new(T)     // 1
    T{size:1} // 2
    &T{size:1} // 3
  2. 以及两种类型的方法声明:

    func (r *T) area() int // 1
    func (r T) area() int // 2

    正确的方法应该是什么?

最佳答案

  1. 分配

new 和 &T{size:1} 返回 *T

T{size:1} 返回 T

The built-in function new takes a type T, allocates storage for a variable of that type at run time, and returns a value of type *T pointing to it. The variable is initialized as described in the section on initial values.

2.

The method set of any other named type T consists of all methods with receiver type T. The method set of the corresponding pointer type *T is the set of all methods with receiver *T or T (that is, it also contains the method set of T).

变量 pt *T

变种人

func (r *T) area() int

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

func (r T) area() int

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

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

关于Go中的结构初始化和方法声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com