Skip to content

Commit 39698c9

Browse files
committed
init: init the project
0 parents  commit 39698c9

File tree

5 files changed

+173
-0
lines changed

5 files changed

+173
-0
lines changed

01basic/01basictype/01bool-num.v

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
module main
2+
3+
// link https://lydiandylin.gitbook.io/vlang/mu-lu/basictype
4+
fn main() {
5+
// bool
6+
yes := true
7+
8+
println("# 布尔类型")
9+
println(yes)
10+
println(sizeof(yes))
11+
12+
println("\n# 数值类型(int/float):")
13+
mut c := 0xa_0 // 十六进制 a0
14+
println(c) // 160
15+
c = 0b10_01 // 二进制 1001
16+
println(c) // 9
17+
c = 1_000_000 // 十进制
18+
println(c)
19+
20+
println("# - float")
21+
f1 := 1.0
22+
println(f1)
23+
24+
// 默认自动推导类型 可以使用 T(value) 设置类型
25+
println("\n# 默认自动推导类型")
26+
x := 3
27+
y := 1.3
28+
println(typeof(x).name) // int
29+
println(typeof(y).name) // f64
30+
31+
xx := i64(3)
32+
yy := f32(3.0)
33+
println(typeof(xx).name) // i64
34+
println(typeof(yy).name) // f32
35+
36+
}

01basic/01basictype/02str.v

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
module main
2+
3+
// https://lydiandylin.gitbook.io/vlang/mu-lu/basictype#zi-fu-chuan-lei-xing
4+
fn main() {
5+
6+
/*
7+
string字符串类型,默认不可变,UTF-8编码。
8+
单引号和双引号都可以,习惯上都还是使用单引号,V编译器中的代码都是统一使用的单引号。
9+
*/
10+
11+
println("# 字符串类型")
12+
13+
str_basic()
14+
15+
println('## 遍历字符串:')
16+
each_str()
17+
18+
println('## 字符串切片/区间')
19+
str_slice()
20+
21+
println('## 原始字符串')
22+
raw_str()
23+
}
24+
25+
26+
fn str_basic() {
27+
28+
s1:='abc'
29+
s2:="def"
30+
println(s1)
31+
32+
// 字符串长度:
33+
println(s2.len) // 3
34+
35+
// 字符串连接:
36+
s3 := s1+s2
37+
println(s3)
38+
39+
// 字符串追加:
40+
mut s4 := 'a-' // 必须是可变才可以追加
41+
s4 += s1
42+
println(s4)
43+
44+
// 字符串插值:
45+
name:='Bob'
46+
println('hello ${name}')
47+
println("hello ${name}2")
48+
49+
// 多行字符串
50+
println('1 first line
51+
2 second line')
52+
53+
// 是否包含子字符串
54+
println(s1.contains('bc')) //true
55+
println(s1.contains('bb')) //false
56+
57+
}
58+
59+
60+
fn each_str() {
61+
str := 'abc123'
62+
//遍历value
63+
for s in str {
64+
println(s.str())
65+
}
66+
//遍历index和value
67+
for i, s in str {
68+
println('index:$i,value:$s.str()')
69+
}
70+
}
71+
72+
// TIP: 采用的是左闭右开。
73+
fn str_slice() {
74+
s := 'hello_world'
75+
println(s[..3]) //输出hel
76+
println(s[2..]) //输出llo_world
77+
println(s[2..5]) //输出llo
78+
79+
// NOTE: 区间支持负数的索引值,不过要在字符串名后特别加一个#,否则会报错
80+
println(s#[-5..-2]) //输出wor
81+
82+
// NOTE: 字符串区间越界的or代码块处理
83+
println(s[..s.len])
84+
println(s[..s.len + 1] or { 'oh,no' })
85+
println(range_check(s) or { 'out of range' })
86+
}
87+
88+
fn range_check(s string) !string {
89+
return s[..20] !
90+
}
91+
92+
// 原始字符串
93+
// 在单引号或双引号前加上小写r,就表示是raw字符串,在原始字符串中不支持插值和转译。
94+
fn raw_str() {
95+
name := 'tom'
96+
str := 'name is: ${name} \n' //字符串插值和转译
97+
raw_str := r'name is: {name} \n' //原始字符串,在单引号或双引号之前加上r前缀
98+
raw_str2 := r"name is: {name} \n" //原始字符串,在单引号或双引号之前加上r前缀
99+
println(str)
100+
println(raw_str)
101+
println(raw_str2)
102+
}

01basic/01basictype/03rune.v

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module main
2+
3+
/*
4+
rune类型
5+
rune是u32的类型别名,用4个字节来表示一个unicode字符/码点,跟string不是同一个类型。
6+
rune使用反引号来表示。
7+
*/
8+
fn main() {
9+
println('rune类型:')
10+
11+
s1 := 'a' //单引号,string类型
12+
s2 := "a" //双引号,string类型
13+
s3 := `a` //反引号,rune类型
14+
println(typeof(s1).name)
15+
println(typeof(s2).name)
16+
println(typeof(s3).name)
17+
println(int(s3)) // 97
18+
19+
// c2 := `aa` // ERR: 编译不通过,报错,只能是单字符
20+
c3 := `中`
21+
println(typeof(c3).name) // rune类型
22+
println(sizeof(c3)) // 4个字节,unicode4.0
23+
println(int(c3)) // 20013
24+
println(c3)
25+
}

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# learn vlang
2+
3+
> start on 2023.11.02
4+
5+
学习参考自文档 [V语言学习笔记](https://lydiandylin.gitbook.io/vlang/mu-lu/readme)

hello.v

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main
2+
3+
fn main() {
4+
println("hello vlang")
5+
}

0 commit comments

Comments
 (0)