筆記-go反射操作私有變數

selden發表於2021-07-02
// Index 獲取首頁資訊
func (receiver *Home) Index(req *controllers.HomeRequest, ctx *gin.Context) (*controllers.HomeResponse, error) {
    value := reflect.ValueOf(ctx).Elem()

    engine := value.FieldByName("engine")
    // rf can't be read or set.
    engine = reflect.NewAt(engine.Type(), unsafe.Pointer(engine.UnsafeAddr())).Elem()
    v := engine.Interface()
    context := v.(*gin.Engine)
    help.Dump(context)

    return &controllers.HomeResponse{}, nil
}

不需要依賴註釋生成文件,可以反射操作所有路由資訊

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章