我正在尝试为作为指针的结构成员分配一个值,但它在运行时给出“ panic :运行时错误:无效的内存地址或零指针取消引用”......

package main

import (
    "fmt"
    "strconv"
)

// Test
type stctTest struct {
    blTest *bool
}

func main() {

    var strctTest stctTest
    *strctTest.blTest = false

    fmt.Println("Test is " + strconv.FormatBool(*strctTest.blTest))

}

运行时错误似乎来自* strctTest.blTest = false的值分配,但是为什么呢?我如何将其设置为假?

最佳答案

为什么是错误?因为一个指针只是指向。它不会创建任何指向 AT 的东西。你需要这样做。

如何将其设置为false?这一切都取决于您为什么将其设为指针。

这个的每个副本都应该指向同一个 bool 值吗?然后它应该在创建函数中分配一些空间。

func NewStruct() *strctTest {
    bl := true
    return &strctTest{
        blTest: &bl,
     }
}

用户是否应该将其指向他自己的 bool 值?然后应该在创建对象时手动设置。
func main() {
    myBool := false
    stctTest := strctTest{
        blTest: &myBool
    }

    fmt.Println("Test is " + strconv.FormatBool(*strctTest.blTest))

}

关于pointers - Golang : Assigning a value to struct member that is a pointer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43811652/

10-11 09:13