| 
                           
   
编程语言 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  
 - }  
 
 
                          (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |