其他分享
首页 > 其他分享> > V语言07管理包

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!
	}
}

对象以接口展示,则调用接口实现.即当作基类,如转为子类,才调用子类同名函数.

标签:语言,07,管理,Cat,fn,println,mymodule,string,speak
来源: https://blog.csdn.net/fqbqrr/article/details/118292300