Home > Enterprise >  golang is executing the certian code which it shuoldn't in if else (log checked)
golang is executing the certian code which it shuoldn't in if else (log checked)

Time:04-21

All log in this area is not printed (showing inside it's not running). However the last line is execute anyway. I'm so frustrated and sad, totally had no idea. Many thanks if there's any idea on it.

if !reflect.DeepEqual(MachineNow.TCP_machine.Two_D_Dta_Old, twoD_new) {
        //the situation should not be executed
        log.Println("new to old updated")   //all log is not printing (O)
        fmt.Println("new", twoD_new[0][0])
        fmt.Println("old", MachineNow.TCP_machine.Two_D_Dta_Old[0][0])
        MachineNow.TCP_machine.Two_D_Dta_Old = twoD_new  //this line is doing anyway (X)
        
    }

CodePudding user response:

  • Have you checked your “log” output and level? Maybe you set the output level to be higher than “Println”, so it’s simply ignored.
  • Try to use debug to know if this runs into this code block or just your assumption.
  • One more thing to check is: that if you run it by unit test, you need to add the “-v” flag to show output.

CodePudding user response:

Solution: I trasform the object into JSON format and assign to the object. I don't know why but this is the only way to avoid execute that line no matter what. I thought it was just a mistake, now seems that line was indeed executed for unknown reason. it was running windows x64.

new_json, _ := json.Marshal(twoD_new)
_ = json.Unmarshal([]byte(new_json), &MachineNow.TCP_machine.Two_D_Dta_Old)
  •  Tags:  
  • go
  • Related