如何在Golang中正确初始化一个结构体中的结构体指针

huangapple go评论78阅读模式
英文:

How to Init a pointer of struct in a struct properly in Golang

问题

我有一个生成的结构体,看起来像这样:

type a_weird_struct struct {
	a *string
	b *string
	c *struct {
		d *int
		e *int
		f *int
	}
}

如何正确初始化这个结构体?特别是结构体指针 c

英文:

I have a generated struct that looks like this:

type a_weird_struct struct {
	a *string
	b *string
	c *struct {
		d *int
		e *int
		f *int
	}
}

What is the proper way to initialize this struct? Specifically, the struct pointer c.

答案1

得分: 1

尝试像这样初始化指针:

func initPointer() {
    astr, bstr := "xxxx", "yyyy"
    dint, eint, fint := 1, 2, 3
    x := &a_weird_struct{
        a: &astr,
        b: &bstr,
        c: &(struct {
            d *int
            e *int
            f *int
        }{
            d: &dint,
            e: &eint,
            f: &fint,
        }),
    }
    fmt.Println(x)
}

请注意,这只是一个示例代码,具体的上下文可能会有所不同。

英文:

try to init pointer like this

func initPointer() {
    astr, bstr := "xxxx", "yyyy"
    dint, eint, fint := 1, 2, 3
    x := &a_weird_struct{
	    a: &astr,
	    b: &bstr,
	    c: &(struct {
		    d *int
		    e *int
		    f *int
	    }{
		    d: &dint,
		    e: &eint,
		    f: &fint,
	    }),
    }
     fmt.Println(x)
}

答案2

得分: -1

func PointOf[T any](value T) *T {
	return &value
}

a_weird_struct{
	a: PointOf("a"),
	b: PointOf("b"),
	c: &struct{d *int; e *int; f *int}{
		PointOf(1),
		PointOf(2),
		PointOf(3),
	},
}
func PointOf[T any](value T) *T {
	return &value
}

a_weird_struct{
	a: PointOf("a"),
	b: PointOf("b"),
	c: &struct{d *int; e *int; f *int}{
		PointOf(1),
		PointOf(2),
		PointOf(3),
	},
}
英文:
func PointOf[T any](value T) *T {
	return &value
}

a_weird_struct{
	a: PointOf("a"),
	b: PointOf("b"),
	c: &struct{d *int; e *int; f *int}{
		PointOf(1),
		PointOf(2),
		PointOf(3),
	},
}

huangapple
  • 本文由 发表于 2016年10月27日 15:14:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/40278412.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定