ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

V语言07管理包

2021-06-28 09:01:49  阅读:180  来源: 互联网

标签:语言 07 管理 Cat fn println mymodule string speak


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有