Seguimos con V
V es un lenguaje muy modular. Se recomienda crear módulos reutilizables y es muy simple hacerlo. Para crear un nuevo módulo, crea un directorio con el nombre del módulo y los archivos .v con código:
cd ~/code/modules
mkdir mymodule
vim mymodule/mymodule.v
module mymodule
pub fn say_hi() {
println('hola desde mi modulo!')
}
Puede tener tantos archivos .v en mymodule / como desee.
Compílelo con v build module
~/code/modules/mymodule.
Eso es todo, ahora puedes usarlo en tu código:
module main
import mymodule
fn main() {
mymodule.say_hi()
}
Tenga en cuenta que debe especificar el módulo cada vez que llama a una función externa. Esto hace que el código sea mucho más legible y fácil de entender, ya que siempre está claro qué función se llama desde qué módulo. Especialmente en proyectos grandes.
Los nombres de los módulos deben ser cortos, de menos de 10 caracteres. No se permiten importaciones circulares.
Puede crear módulos en cualquier lugar.
Todos los módulos se compilan en un solo ejecutable.
Si desea escribir un módulo que invoque automáticamente algún código de configuración cuando se importe (tal vez desee llamar a algunas funciones de la biblioteca C), escriba una función de inicio del módulo dentro del módulo:
fn init() {
// your setup code here ...
}
La función init no puede ser pública. Se llamará automáticamente.
Un tipo implementa una interfaz mediante la implementación de sus métodos. No hay una declaración explícita de intención, no hay palabras clave "implementa".
struct Dog {}
struct Cat {}
fn (d Dog) speak() string {
return 'woof'
}
fn (c Cat) speak() string {
return 'meow'
}
interface Speaker {
speak() string
}
fn perform(s Speaker) {
println(s.speak())
}
dog := Dog{}
cat := Cat{}
perform(dog) // "woof"
perform(cat) // "meow"
enum Color {
red green blue
}
fn main() {
mut color := Color.red
// V sabe que color es un color por ende podemos suprimir Color.
color = .green
println(color) // "1"
if color == .green {
println("it's green")
}
}
Dejo link: https://vlang.io/