前面我写了一篇关于实现一个像PHP风格一样的Go语言map/array/slice解析的文章,在写这篇文章的过程中我还发现了一些有意思的事情,这里记录两件。
判断一个变量的类型
比如一个变量structure
的类型可能是map[string]any
或者是[]any
,正常我们的想法肯定是
|
|
我当时写完这段代码的第一反应就是为什么还要在里面再转换一次呢?外面都已经判断过是这样的了,肯定里面要按判断的这个类型去用啊,不过也没有多想,这个时候看到了VSCode有提示
这个意思就是可以改写成
|
|
这个写法简直完美了,简洁又优雅,虽然感觉有点奇怪。具体的解释可以看Go语言的类型选择。
补充:刚才验证了下,如果想直接获取一个变量的类型,正常的做法是reflect.TypeOf(structure)
,而不是structure.(type)
,后者就是只能在switch/case
语句中使用的,所以它就是这么一个结构,无论如何,这确实是一个非常好的设计。
使用VSCode粘贴json内容时自动生成struct
s
在写Garray的过程中,我发现把那段用于测试的json粘贴到Go的代码中时,它会自动转换成struct,而且是会将整个json中用到的所有struct都能定义出来,刚开始我还以为是我复制错了,直到反复确认才确定了确实是VSCode的功能,至于是哪个插件做到的我就不知道了。比如粘贴这样一段json到*.go
的代码中时,粘贴进去的将是这样的一组类型定义。
|
|
|
|
这简直太妙了。