Это подробное руководство по основам языка V, включающее примеры программ, которые демонстрируют различные концепции программирования на V.
Каждая программа на V начинается с функции main
:
fn main() {
println('Hello, World!')
}
Основные типы данных в V:
int
— целые числаf32
— числа с плавающей запятойf64
— числа с двойной точностьюchar
— одиночные символыПример использования арифметических операций в V:
fn main() {
a := 10
b := 20
sum := a + b
diff := b - a
prod := a * b
div := b / a
mod := b % a
println('Sum: $sum')
println('Difference: $diff')
println('Product: $prod')
println('Division: $div')
println('Modulus: $mod')
}
Ввод и вывод данных с использованием os.input
и println
:
import os
fn main() {
mut input := os.input('Enter an integer: ')
num := input.int()
println('You entered: $num')
}
Пример использования оператора if-else
:
import os
fn main() {
mut input := os.input('Enter an integer: ')
num := input.int()
if num > 0 {
println('The number is positive.')
} else if num < 0 {
println('The number is negative.')
} else {
println('The number is zero.')
}
}
Пример цикла for
:
fn main() {
mut i := 0
for i < 5 {
println('i = $i')
i++
}
}
Пример работы с массивами:
fn main() {
arr := [1, 2, 3, 4, 5]
for i, value in arr {
println('arr[$i] = $value')
}
}
Пример создания и использования функции:
fn greet() {
println('Hello from the function!')
}
fn main() {
greet()
}
Пример создания и использования структур:
struct Rectangle {
width f64
height f64
}
fn (r Rectangle) area() f64 {
return r.width * r.height
}
fn (r Rectangle) display() {
println('Width: ${r.width}, Height: ${r.height}, Area: ${r.area()}')
}
fn main() {
rect := Rectangle{width: 5.0, height: 3.0}
rect.display()
}
В V нет прямого наследования, но можно использовать композицию:
struct Animal {
name string
}
fn (a Animal) speak() {
println('$a.name makes a sound.')
}
struct Dog {
Animal
}
fn (d Dog) speak() {
println('${d.name} barks.')
}
fn main() {
dog := Dog{Animal{name: 'Rex'}}
dog.speak()
}
В V нет указателей в традиционном смысле, но можно использовать ссылки:
fn main() {
num := 10
ref_num := &num
println('Value of num: $num')
println('Value via reference: $ref_num')
}
Пример работы с динамическим выделением памяти с использованием unsafe
:
import unsafe
fn main() {
num := unsafe { &int(10) }
println('Value: $num')
}
Пример работы с коллекциями в V:
fn main() {
list := ['Hello', 'World']
for item in list {
println(item)
}
}
Пример обработки ошибок с использованием ?`:
fn divide(a int, b int) ?int {
if b == 0 {
return error('Division by zero')
}
return a / b
}
fn main() {
result := divide(10, 2) or {
println('Error: $err')
return
}
println('Result: $result')
result = divide(10, 0) or {
println('Error: $err')
return
}
println('Result: $result')
}
Пример работы с файлами в V:
import os
fn main() {
mut file := os.create('example.txt') or {
println('Error creating file: $err')
return
}
file.write('Hello, file!') or {
println('Error writing to file: $err')
return
}
file.close() or {
println('Error closing file: $err')
return
}
mut file := os.open('example.txt') or {
println('Error opening file: $err')
return
}
contents := file.read_all() or {
println('Error reading from file: $err')
return
}
println(contents)
}
Иной источник:
Основы: https://koplenov.github.io/vpage/
Пакетный менеджер: https://vpm.vlang.io/