V语言07管理包
v 选项 参数
:
选项 | 意思 |
---|---|
install | 安装 |
remove | 删除 |
search | 搜索 |
update | 更新,更新一个 |
upgrade | 升级,升级所有过时的 |
list | 列举 |
outdated | 过时,列举需要升级的 |
v install ui
//从VPM搞事情
v remove [module]
发布包
v.mod
.用v new mymodule或v init
命令,已有.
内部为:
Module {
name: "mymodule"
description: "我的包."
version: "0.0.1"
license: "MIT"
dependencies: []
}
最小结构:
v.mod
mymodule.v
内部为:
//mymodule.v
module mymodule
pub fn hello_world() {
println("你好啊")
}
创建git
git init
git add .
git commit -m "INIT"
在github.com
上建仓库.推至远端
.
在https://vpm.vlang.io/new
上提交.
最终模块名为:mygithubname.mymodule
,并加上vlang/vlang-module
标签来方便搜索.
声明类型
struct Dog {
breed string
}
struct Cat {
breed string
}
fn (d Dog) speak() string {
return "woof"
}
fn (c Cat) speak() string {
return "meow"
}
//V的接口可定义字段和方法
interface Speaker {
breed string
speak() string
}
dog := Dog{"Leonberger"}
cat := Cat{"Siamese"}
mut arr := []Speaker{}
arr << dog
arr << cat
for item in arr {
println("$item.breed说: $item.speak()")
}
实现字段+方法
即实现接口,不必显式声明意图
,无实现
关键字.
转换接口
interface Something {}
fn announce(s Something) {
if s is Dog {
println("$s.breed dog") // `s`自动转为狗
} else if s is Cat {
println("$s.breed cat")
} else {
println("其余")
}
}
用动态
转换操作符,测试接口底层
类型.接口可实现默认
方法,这样构可不实现.
struct Cat {}
fn (c Cat) speak() string {
return "meow!"
}
interface Adoptable {}
fn (a Adoptable) speak() string {
return "哈哈!"
}//接口的
fn new_adoptable() Adoptable {
return Cat{}
}
fn main() {
cat := Cat{}
assert cat.speak() == "meow!"
a := new_adoptable()
assert a.speak() == "哈哈!"//表层
if a is Cat {//底层
println(a.speak()) // meow!
}
}
对象以接口
展示,则调用接口
实现.即当作基类
,如转为子类
,才调用子类
同名函数.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现