File tree 5 files changed +173
-0
lines changed
5 files changed +173
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
1
+ # learn vlang
2
+
3
+ > start on 2023.11.02
4
+
5
+ 学习参考自文档 [ V语言学习笔记] ( https://lydiandylin.gitbook.io/vlang/mu-lu/readme )
Original file line number Diff line number Diff line change
1
+ module main
2
+
3
+ fn main () {
4
+ println ("hello vlang" )
5
+ }
You can’t perform that action at this time.
0 commit comments