天天看点

V语言10共享对象

共享对象

通过<code>共享对象</code>在<code>协程/线程</code>间交换数据.应按<code>共享</code>创建并传递给<code>协程</code>.<code>构</code>底层包含一个<code>锁</code>来锁住并发访问,<code>rlock</code>针对<code>只读</code>,而<code>lock</code>针对<code>读写</code>.

共享变量必须为<code>构,数组,映射</code>.

<code>V</code>内置支持<code>数格</code>.<code>json.decode</code>带两个参数:<code>1为类型,2为串</code>.

<code>V</code>生成<code>加解密</code>数格代码,无运行时反射,性能更好.

测试

<code>assert</code>检查表达式为<code>真</code>.失败则中止程序.应仅用来检测编程错误,错误时打印出比较两端值.

<code>v 你好_test.v</code>命令.<code>v</code>在文件中执行所有测试函数.

<code>序号</code>

注意

<code>1</code>

必须以<code>_test.v</code>结尾,

<code>2</code>

测试函数以<code>test_</code>开始,

<code>3</code>

普通函数也可在测试中,但要手动调用,

<code>4</code>

有两类测试:<code>外部/内部</code>.

<code>5</code>

内部测试必须声明模块名,可调用相同模块私函数

<code>6</code>

外部测试必须导入<code>待测试</code>模块,仅能测试模块的<code>外部/公开</code>函数.

上面为<code>内部测试</code>,内部测试可用来测试<code>私有</code>函数

测试函数中特殊函数:<code>testsuite_begin/end</code>在其他测试函数<code>前后</code>运行.

一个错误,就传播了.运行单个测试文件:<code>v foo_test.v</code>.

测试整个模块,<code>v test mymodule/v test .</code>.<code>-stats</code>获取测试细节.你可在测试目录中放<code>testdata</code>文件夹.特殊处理,都可这样.

<code>V编译器路径</code>可由<code>@VEXE</code>得到.

管理内存

<code>V</code>第一时间用<code>值类型/串缓冲</code>来避免<code>不必要分配</code>.大多数代码<code>&gt;90%</code>用<code>自动释放</code>引擎释放.编译期插入释放代码,剩余小部分用<code>引用计数</code>释放.

<code>开发者</code>不必改代码,就<code>管用</code>了.没有<code>厚重</code>的<code>垃圾跟踪</code>或<code>昂贵</code>的<code>引用计数</code>.

你可利用<code>V</code>的自动释放引擎,并对自己的类型定义<code>释放</code>.

可用<code>-manualfree</code>开关来手动管理内存,用于低级控制.函数上加<code>[manualfree]</code>也可以.当前默认为<code>-autofree</code>开关.不<code>自动释放</code>,会<code>泄露内存</code>.

<code>串</code>不转义<code>draw_text</code>,所以退出函数,就清理了.

用<code>-prealloc</code>标志,前2个根本不分配.是小串,所以给他们用<code>预分配缓冲</code>.

ORM

<code>α状态</code>,支持<code>SQLite, MySQL和Postgres</code>,将支持<code>MS SQL和Oracle</code>

好处

统一语法

统一查询

安全

编译时检查

<code>可读性/简单性</code>