

编程说话 V 的作者本日宣布了 V 的首个可用版本(预构建的二进制文件即将推出)。

源码获取地点:https://github.com/vlang/v/releases/tag/v0.0.12
作者展示的行使 V 开拓的应用示例。

V 是一个荟萃了 Go 的简朴和 Rust 的安详特征的新说话。
首要特征:
- 快速编译(编译器只有 400kb,并且无第三方依靠)
- 安详
- C/C++ 转换
示例代码:
数据库会见:
- struct User { /* ... */ }
- struct Post { /* ... */ }
- struct DB { /* ... */ }
-
- struct Repo <T> {
- db DB
- }
-
- fn new_repo<T>(db DB) Repo {
- return Repo<T>{db: db}
- }
-
- fn (r Repo) find_by_id(id int) T? { // `?` means the function returns an optional
- table_name := T.name // in this example getting the name of the type gives us the table name
- return r.db.query_one<T>('select * from $table_name where id = ?', id)
- }
-
- fn main() {
- db := new_db()
- users_repo := new_repo<User>(db)
- posts_repo := new_repo<Post>(db)
- user := users_repo.find_by_id(1) or {
- eprintln('User not found')
- return
- }
- post := posts_repo.find_by_id(1) or {
- eprintln('Post not found')
- return
- }
- }
收集开拓:
- struct Story {
- title string
- }
-
- // Fetches top HN stories in 8 coroutines
- fn main() {
- resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json')?
- ids := json.decode([]int, resp.body)?
- mut cursor := 0
- for _ in 0..8 {
- go fn() {
- for {
- lock { // Without this lock the program will not compile
- if cursor >= ids.len {
- break
- }
- id := ids[cursor]
- cursor++
- }
- resp := http.get('https://hacker-news.firebaseio.com/v0/item/$id.json')?
- story := json.decode(Story, resp.body)?
- println(story.title)
- }
- }()
- }
- runtime.wait() // Waits for all coroutines to finish
- }
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|