GOCMS
  1. 文章接口
GOCMS
  • 分类接口
    • 分类列表获取
      POST
    • 分类详情
      POST
  • 文章接口
    • 文章列表
      POST
    • 文章详情
      POST
  • 图片新闻
    • 图片新闻详情+项目列表
      POST
    • 图片新闻项目列表
      POST
  • 会员接口
    • 会员注册 [ 手机号 + 密码 ]
      POST
    • 发送注册短信
      POST
    • 会员登陆 [ 手机号 + 密码 ]
      POST
    • 重置密码
      POST
    • 短信登录
      POST
  • 账户中心
    • 账户详情
      POST
    • 修改密码
      POST
    • 修改昵称
      POST
  • 收藏接口
    • 提交收藏
      POST
    • 取消收藏
      POST
    • 我的收藏 [ 列表 ]
      POST
    • 我的收藏 [ ids ]
      POST
  • 评论接口
    • 提交评论
      POST
    • 评论列表
      POST
    • 删除评论
      POST
    • 获取用户评论点赞ID
      POST
    • 用户评论列表
      POST
  • 地址接口
    • 添加或修改地址
    • 删除地址
    • 客户地址列表
  • 商品品牌
    • 品牌列表
    • 品牌详情
  • 商品接口
    • 商品列表
    • 商品详情
  • 订单接口
    • 创建订单
    • 购物车数据转商品数据
    • 订单状态
    • 我的订单
    • 删除订单
    • 订单详情
  • 通知接口
    • 获取通知列表
    • 获取通知总数
    • 标为已读 单条
    • 标为已读 全部
    • 删除通知
  • 话题接口
    • 话题列表
    • 话题详情
  1. 文章接口

文章详情

开发中
POST
/Article/Detail

请求参数

Header 参数
UTK
string 
必需
默认值:
{{UTK}}
RTK
string 
必需
默认值:
{{RTK}}
Body 参数multipart/form-data
Id
integer 
文章主键
必需
示例值:
108
UseCache
string 
可选
示例值:
y

返回响应

🟢200成功
application/json
Body
object {0}
示例
{
  "data": {
    "Id": 118,
    "CategoryId": 10005,
    "CategoryName": "编程技巧",
    "Title": "Golang 类型断言 ",
    "ImageUrl": "",
    "Images": "[]",
    "Keywords": "Golang,类型,断言 ",
    "Description": "Go语言的interface中可以是任何类型,所以Go给出了类型断言来判断某一时刻接口中所含有的类型 ",
    "Content": "<h3>一,如何检测和转换接口变量的类型</h3><p>在Go语言的interface中可以是任何类型,所以 Go 给出了类型断言来判断某一时刻接口中所含有的类型,例如现在给出一个接口,名为InterfaceText:</p><pre><code class=\"language-go\">x,err:=interfaceText.(T)//T是某一种类型</code></pre><p>上式是接口断言的一般形式,因为此方法不一定每次都可以完好运行,所以err的作用就是判断是否出错。所以一般接口断言常用以下写法:</p><pre><code class=\"language-go\">if v,err:=InterfaceText.(T);err {//T是一种类型\r\n    possess(v)//处理v\r\n    return\r\n}</code></pre><p>如果转换合法,则v为InterfaceText转换为类型T的值,err为ture,反之err为false。</p><p>值得注意的是:InterfaceText必须是接口类型!!!</p><p>有些时候若是想仅判断是否含有类型T,可以写为:</p><pre><code class=\"language-go\">if _,err:=InterfaceText.(T);err{\r\n    //..\r\n    return \r\n}</code></pre><p>下面给出一个具体的例子帮助理解:</p><pre><code class=\"language-go\">package main\r\nimport (\r\n\t\"fmt\"\r\n    \"math\"\r\n)\r\ntype Square struct{\r\n    slide float32\r\n}\r\ntype Circle struct{\r\n    radius float32\r\n}\r\ntype Figure interface{\r\n    Area() float32\r\n}\r\nfunc main(){\r\n    var fi Figure\r\n    sq:=new(Square)\r\n    sq.slide=5\r\n    fi=sq\r\n    if v,err:=fi.(*Square);err {\r\n        fmt.Printf(\"fi contain a variable of type : %v\\n\",v)\r\n    }else {\r\n        fmt.Println(\"fi does not contain a variable of Square\")\r\n    }\r\n    if v2,ok:=fi.(*Circle);ok {\r\n        fmt.Printf(\"fi contain a variable of type : %v\\n\",v2)\r\n    }else {\r\n        fmt.Println(\"fi does not contain a variable of Circle\")\r\n    }\r\n}\r\nfunc (s *Square) Area() float32{\r\n    return s.slide*s.slide\r\n}\r\nfunc (c *Circle) Area() float32{\r\n    return c.radius*c.radius*math.Pi\r\n}</code></pre><h3>二,类型判断:type-switch</h3><p>这是另一种类型判断的方法,此方法和switch很相似。直接看代码:</p><pre><code class=\"language-go\">switch x:=InterfaceText.(type) {\r\n    case *Square:\r\n        fmt.Printf(\"text:%v\",i)\r\n    case *Circle:\r\n        //..\r\n    case nil:\r\n        //..\r\n    default:\r\n        //..\r\n    //..and so forth\r\n}\r\n\r\n// 理解思路和switch很相似,如果InterfaceText中有*Square,*Circle,nil三种类型,就会执行对应的代码,若都没有,便会执行default里的代码。\r\n//如果仅判断,而不使用值的话可以写为:\r\nswitch InterfaceText.(type) {\r\n    case *Square:\r\n        fmt.Printf(\"text:%v\",i)\r\n    case *Circle:\r\n        //..\r\n    case nil:\r\n        //..\r\n    default:\r\n        //..\r\n    //..and so forth\r\n}</code></pre><p>有时为了方便,我们可以把它打包成一个函数来判断一些未知类型:</p><pre><code class=\"language-go\">func classify(items...interface{}){\r\n    for i,x:=range items {\r\n        switch x.(type) {\r\n        case bool:\r\n            fmt.Printf(\"text:%v\",i)\r\n        case int:\r\n            //..\r\n        case float32:\r\n            //..\r\n        default:\r\n            //..\r\n        //..and so \r\n   }\r\n}</code></pre><p> <br></p>",
    "ViewNumber": 99,
    "CreateTime": 1672295606,
    "Status": 1,
    "Picked": 2,
    "Path": "0ac30f5b1e02e5798c1b4708b22dadd5",
    "ImageList": null,
    "ImagesCount": 0,
    "CreateTimeFormat": "",
    "ContentItems": [
      {
        "content": "一,如何检测和转换接口变量的类型",
        "type": "h3"
      },
      {
        "content": "在Go语言的interface中可以是任何类型,所以 Go 给出了类型断言来判断某一时刻接口中所含有的类型,例如现在给出一个接口,名为InterfaceText:",
        "type": "text"
      },
      {
        "content": "x,err:=interfaceText.(T)//T是某一种类型",
        "type": "pre"
      },
      {
        "content": "上式是接口断言的一般形式,因为此方法不一定每次都可以完好运行,所以err的作用就是判断是否出错。所以一般接口断言常用以下写法:",
        "type": "text"
      },
      {
        "content": "if v,err:=InterfaceText.(T);err {//T是一种类型\r    possess(v)//处理v\r    return\r}",
        "type": "pre"
      },
      {
        "content": "如果转换合法,则v为InterfaceText转换为类型T的值,err为ture,反之err为false。值得注意的是:InterfaceText必须是接口类型!!!有些时候若是想仅判断是否含有类型T,可以写为:",
        "type": "text"
      },
      {
        "content": "if _,err:=InterfaceText.(T);err{\r    //..\r    return \r}",
        "type": "pre"
      },
      {
        "content": "下面给出一个具体的例子帮助理解:",
        "type": "text"
      },
      {
        "content": "package main\rimport (\r\"fmt\"\r    \"math\"\r)\rtype Square struct{\r    slide float32\r}\rtype Circle struct{\r    radius float32\r}\rtype Figure interface{\r    Area() float32\r}\rfunc main(){\r    var fi Figure\r    sq:=new(Square)\r    sq.slide=5\r    fi=sq\r    if v,err:=fi.(*Square);err {\r        fmt.Printf(\"fi contain a variable of type : %v\\n\",v)\r    }else {\r        fmt.Println(\"fi does not contain a variable of Square\")\r    }\r    if v2,ok:=fi.(*Circle);ok {\r        fmt.Printf(\"fi contain a variable of type : %v\\n\",v2)\r    }else {\r        fmt.Println(\"fi does not contain a variable of Circle\")\r    }\r}\rfunc (s *Square) Area() float32{\r    return s.slide*s.slide\r}\rfunc (c *Circle) Area() float32{\r    return c.radius*c.radius*math.Pi\r}",
        "type": "pre"
      },
      {
        "content": "二,类型判断:type-switch",
        "type": "h3"
      },
      {
        "content": "这是另一种类型判断的方法,此方法和switch很相似。直接看代码:",
        "type": "text"
      },
      {
        "content": "switch x:=InterfaceText.(type) {\r    case *Square:\r        fmt.Printf(\"text:%v\",i)\r    case *Circle:\r        //..\r    case nil:\r        //..\r    default:\r        //..\r    //..and so forth\r}\r\r// 理解思路和switch很相似,如果InterfaceText中有*Square,*Circle,nil三种类型,就会执行对应的代码,若都没有,便会执行default里的代码。\r//如果仅判断,而不使用值的话可以写为:\rswitch InterfaceText.(type) {\r    case *Square:\r        fmt.Printf(\"text:%v\",i)\r    case *Circle:\r        //..\r    case nil:\r        //..\r    default:\r        //..\r    //..and so forth\r}",
        "type": "pre"
      },
      {
        "content": "有时为了方便,我们可以把它打包成一个函数来判断一些未知类型:",
        "type": "text"
      },
      {
        "content": "func classify(items...interface{}){\r    for i,x:=range items {\r        switch x.(type) {\r        case bool:\r            fmt.Printf(\"text:%v\",i)\r        case int:\r            //..\r        case float32:\r            //..\r        default:\r            //..\r        //..and so \r   }\r}",
        "type": "pre"
      },
      {
        "content": " \n",
        "type": "text"
      }
    ]
  },
  "errcode": 0
}
上一页
文章列表
下一页
图片新闻详情+项目列表
Built with