Bar*_*rim 4 struct pointers go
我正在尝试为作为指针的struct成员分配一个值,但它在运行时给出了"恐慌:运行时错误:无效的内存地址或nil指针取消引用"...
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))
}
Run Code Online (Sandbox Code Playgroud)
运行时错误似乎来自于使用*strctTest.blTest = false赋值,但为什么呢?如何将其设置为false?
为什么这是一个错误?因为指针只指向.它没有创造任何指向AT的东西.你需要这样做.
如何将其设置为false?这一切都取决于你为什么把它作为一个指针.
是否每个副本都应该指向相同的bool?然后应该在创建函数中分配一些空间.
func NewStruct() *strctTest {
bl := true
return &strctTest{
blTest: &bl,
}
}
Run Code Online (Sandbox Code Playgroud)
用户是否应该将其指向自己的布尔值?然后应在创建对象时手动设置它.
func main() {
myBool := false
stctTest := strctTest{
blTest: &myBool
}
fmt.Println("Test is " + strconv.FormatBool(*strctTest.blTest))
}
Run Code Online (Sandbox Code Playgroud)