初识 vlang 应该是从秋名山群开始的吧,某大佬分享了 vlang 之后自己不玩,于是就我来玩吧2333。
在 github 上找到 vlang 的源码,下载编译之,这里直接遇到第一个坑!
坑!
有没有看到后面有一句话告诉你 code
目录是必要的,至少在当前版本是必需的,像我这种不看文档,下载就编译的人直接吃了个亏。
随后把编译结果 link 到 /usr/local/bin
就完事。
接下去配置一下 vscode,比较出乎意料的是 vscode 上已有 vlang 插件,而且还挺好用的。
插件
同时还需要下载并配置 CodeRunner
插件,加入 vlang 的运行命令,以方便我们直接运行代码。
"v": "v $fileName && ./$fileNameWithoutExt"
接下去自然是看看文档然后写点代码玩玩,由于事先知道这东西和 go 很像,我就直接往后翻了,直到一段代码映入眼帘:
struct Dog {}
struct Cat {}
fn (d Dog) speak() string {
return 'woof'
}
fn (c Cat) speak() string {
return 'meow'
}
interface Speaker {
speak() string
}
fn perform(s Speaker) {
println(s.speak())
}
fn main() {
dog := Dog{}
cat := Cat{}
perform(dog) // ==> "woof"
perform(cat) // ==> "meow"
}
直接被吓死,第一次看到接口是如此设计的语言,真要用起来,接口的实现上哪找:(
另外还有一些看起来很有特色但是我一点都不喜欢的特性,比如说这些:
特别提一句,v 没有泛型!总体来说,v 并不算出彩的语言,语言特性非常弱,容易上手,但是要实现复杂的内容,恐怕还是会落入到 go 的俗套(当时学习 go 的时候我就吐槽过为什么没有泛型,结果到了现在依然没有,结合其他的一些缺点,我甚至不认为它是一门现代的语言),动态能力不足。
或许对于我来说,玩过一把之后就这样吧,继续等它完善了(别再学 go 了!!!)