zoukankan      html  css  js  c++  java
  • Golang New 关键字的小bug 未找到原因(暂时)

    在使用new关键字对res 进行初始化不会出现SendXml方法中的xml.unmashal方法不成功现象, 而如果使用new关键字的分解动作对res先取零值结构体 然后取地址后,就会出现xml.unmashal不成功(無报错),初始估计是xml.unmashal对interface的地址操作出现误差,但是具体情况未知

    func PostapiRequest(req interface{}) (res interface{}, response api.ExtensionResponse) {
    body, err := xml.Marshal(req)
    if err != nil {
    log.Println("create byte xml err---->", err)
    return
    }

    switch req.(type) {
    case hotelSearchWithRooms.HotelSearchWithRoomsReq:
    res = new(hotelSearchWithRooms.HotelSearchWithRoomsRes)
    case hotelDetails.HotelDetailsReq:
    res = new(hotelDetails.HotelDetailsRes)
    case hotelCancellationPolicy.HotelCancelPolicyReq:
    res = new(hotelCancellationPolicy.HotelCancelPolicyRes)
    case countryList.CountryListReq:
    res = new(countryList.CountryListRes)
    case cityList.CityListReq:
    res =new(cityList.CityListRes)
    }

    fmt.Println(string(body))
    fmt.Println(reflect.TypeOf(req))
    response.TimeNow = time.Now()

    code, message, data := api.HttpClient.SendXml(api.APIurl, body, api.Heads, 0, res)

    response.Code = code
    response.Message = message
    response.UrlLog = api.APIurl
    response.BodyLog = utils.Bytes2String(body)
    response.DataLog = utils.Bytes2String(data)
    response.Err = err
    if code != commobj.SUCCESS {
    log.Println(message)
    } else {
    fmt.Printf("%+v ", res)

    }

    return
    }
    暂时记录下来方便下次查找,目前建议尽量使用new关键字进行初始化
  • 相关阅读:
    python3删除mysql上月分区数据(脚本)
    ansible之基本原理及命令
    centOS 7 简单设置(虚拟机)
    TCP_Wrappers 简介
    sudo
    引用数据应该选择 ID, CODE 还是 NAME
    吃得洒脱是一种什么体验
    通用数据同步机制
    我的学PyTorch之路(1)
    38岁才学会了游泳的心得
  • 原文地址:https://www.cnblogs.com/EvildoerOne/p/8337208.html
Copyright © 2011-2022 走看看