Полное руководство по основам языка V

Это подробное руководство по основам языка V, включающее примеры программ, которые демонстрируют различные концепции программирования на V.

Назад

Первая программа на V

Каждая программа на V начинается с функции main:


fn main() {
    println('Hello, World!')
}
        

Типы данных

Основные типы данных в V:

Арифметические операции

Пример использования арифметических операций в 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/