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
}
}

