Golang中遇到问题需要帮助

Golang中遇到问题需要帮助

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, playground")
	var data A
	data.B.Value1 = "abc"
	fmt.Println(data.B.Value1)

}

type A struct {
	Hello string
	B     *struct {
		Value1 string
		Value2 string
	}
}

报错提示无效指针,我该如何解决?B 结构体必须在 A 内部定义,不能写在 A 外部。


更多关于Golang中遇到问题需要帮助的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

你可以让 B 不是指针类型:https://play.golang.org/p/RdiU0jG4AoY

你也可以创建一个 MakeA 函数:https://play.golang.org/p/A-H3ra5pVov

更多关于Golang中遇到问题需要帮助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, playground")
	var data A
	// 初始化B指针
	data.B = &struct {
		Value1 string
		Value2 string
	}{}
	data.B.Value1 = "abc"
	fmt.Println(data.B.Value1)
}

type A struct {
	Hello string
	B     *struct {
		Value1 string
		Value2 string
	}
}

或者使用构造函数:

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, playground")
	data := NewA()
	data.B.Value1 = "abc"
	fmt.Println(data.B.Value1)
}

type A struct {
	Hello string
	B     *struct {
		Value1 string
		Value2 string
	}
}

func NewA() *A {
	return &A{
		B: &struct {
			Value1 string
			Value2 string
		}{},
	}
}

也可以在使用前检查并初始化:

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, playground")
	var data A
	if data.B == nil {
		data.B = &struct {
			Value1 string
			Value2 string
		}{}
	}
	data.B.Value1 = "abc"
	fmt.Println(data.B.Value1)
}

type A struct {
	Hello string
	B     *struct {
		Value1 string
		Value2 string
	}
}
回到顶部