新手这个语法看不懂

qhyou · 2018-08-31 15:45:00 · 1642 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-08-31 15:45:00 的主题,其中的信息可能已经有所发展或是发生改变。

公司外包团队写的代码:

func (s *StudController) WorkList(param struct {
    StudId int `!;>0`
    LatestId  int `!;>0`
}) web.GetResult {
   //省略里面的代码了
}

这里的 '!;>0' 表示啥意思啊?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1642 次点击  
加入收藏 微博
11 回复  |  直到 2018-09-10 20:45:15
SugarAYuan
SugarAYuan · #1 · 7年之前

你把第二行和第三行的换行给去掉应该就看得懂了

qhyou
qhyou · #2 · 7年之前

@SugarAYuan 'StudentId int !;>0 LatestId int !;>0 '

这样子?以前做Java的,还是看不懂啊?请大侠明示 :)

MR_bai
MR_bai · #3 · 7年之前

struct成员变量标签,自己可以搜 golang tag ,至于1楼的说法,恕我愚钝,我也没明白

qhyou
qhyou · #4 · 7年之前

@MR_bai 刚才翻Struct的文档,确实找到Struct Tag的描述了,大概知道用途。只是这里 '!;>0'的含义还是没看懂,熟悉面向对象的人,再看Go Lang的语法,简直是灾难 ~~~

jarlyyn
jarlyyn · #5 · 7年之前
qhyouqhyou #4 回复

@MR_bai 刚才翻Struct的文档,确实找到Struct Tag的描述了,大概知道用途。只是这里 '!;>0'的含义还是没看懂,熟悉面向对象的人,再看Go Lang的语法,简直是灾难 ~~~

这是注释。 看上去是验证鬼规则。

具体看用了什么库

kingreatwill
kingreatwill · #6 · 7年之前

StudId 必须大于0

unize4
unize4 · #7 · 7年之前

同意#5,这个标签具体什么含义得看用的库,tag是可以自己定义形式,根据不同的业务自己通过反射读取tag内容。看这个样子感觉是自定义的格式

wljgithub
wljgithub · #8 · 7年之前

WorkList 后面不应该跟着一个小括号的么?为什么跑到第三行去了? 难道WorkList不是一个函数

felix328
felix328 · #9 · 7年之前

主要是struct { StudId int !;>0 LatestId int !;>0 }是一个匿名结构体,其实就是param的类型。其他的和普通方法没差。

moonlightfwq
moonlightfwq · #10 · 7年之前
这个可以理解为一种类型。
struct {
    StudId int `!;>0`
    LatestId  int `!;>0`
}

对比下面两种用法可以很明显看出原因

type Stu struct {
    StudId int `!;>0`
    LatestId  int `!;>0`
} 

type Stu map[string]int
mortemnh
mortemnh · #11 · 7年之前

我只能说这是一种很蠢的描述法.......目测意思是 !非空,即非0 ,>0即该值大于0 合起来的意思就是这个字段是自然数(1,2,3,4,5.....)

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传