相关疑难解决方法(0)

分配的指针字段变为 <nil>

我有一个结构:

type user struct {
Id string
..
data_ptr *userData
}
Run Code Online (Sandbox Code Playgroud)

我将用户切片存储在全局范围内:

type Hall struct {
    users []user
}

var hall = Hall{}    //global
Run Code Online (Sandbox Code Playgroud)

最后,http 处理程序:

func dataHandler(response http.ResponseWriter, request *http.Request) {
    userExist, user_ptr := hall.haveUserId()    //works fine
    switch requestType {
    case "load":    
        user_ptr.loadData()   //data loaded and user_ptr.data_ptr is set
    case "newData":
        user_ptr.data_ptr = newData  // <-- this is it, now previously set data_ptr == nil
Run Code Online (Sandbox Code Playgroud)

那么,到底为什么,我的意思是我发送“加载”请求,它加载数据,设置data_ptruser_ptr. 但是在下一次调用“newData”请求时,user_ptr.data_ptrnil

以防万一,这里是loadData()

func …
Run Code Online (Sandbox Code Playgroud)

struct pointers go

2
推荐指数
1
解决办法
807
查看次数

标签 统计

go ×1

pointers ×1

struct ×1