V (programming language): Difference between revisions

Content deleted Content added
Not a copyright violation. The the snippet of code is too short and too functional to be copyrighted.
adding for the sake of attribution
 
(One intermediate revision by one other user not shown)
Line 56:
== Syntax ==
=== Hello world ===
The [["Hello, World!" program]] in V:<ref name="MUO"/><ref name=":0">{{Cite web |title=V Documentation |url=https://docs.vlang.io/ |access-date=2025-08-25 |website=docs.vlang.io}} {{Free-content attribution|title = V Documentation| license statement URL =https://github.com/vlang/v?tab=MIT-1-ov-file| license=The MIT License|this = yes}}</ref>
The [["Hello, World!" program]] in V:<ref name="MUO"/>
<syntaxhighlight lang="v">
fn main() {
Line 64:
 
=== Variables ===
Variables are immutable by default and are defined using {{code|1=:=}} and a value. Use the {{code|mut}} [[reserved word]] (keyword) to make them mutable. Mutable variables can be assigned to using {{code|1==}}:{{sfn|Rao|2021|pp=28-40}}<ref name=":0" />
 
<syntaxhighlight lang="V">
Line 72:
</syntaxhighlight>
 
Redeclaring a variable, whether in an inner scope or in the same scope, is not allowed:{{sfn|Rao|2021|pp=28-40}}<ref name=":0" />
 
<syntaxhighlight lang="V">
Line 83:
 
=== Structs ===
Struct example:<ref name="Knott"/><ref name="section"/><ref name=":0" />
<syntaxhighlight lang="v">
struct Foo {
Line 104:
=== Heap structs ===
 
By default, structs are allocated on the stack. When structs are referenced by using the prefix {{code|1=&}} or have the heap attribute, they are allocated on the heap instead:{{sfn|Rao|2021}}<ref name=":0" />
<syntaxhighlight lang="v">
struct Foo {
Line 126:
[[Method (computer programming)|Methods]] in V are functions defined with a receiver [[Parameter (computer programming)|argument]]. The receiver appears in its own argument list between the fn keyword and the method name. Methods must be in the same [[Modular programming|module]] as the receiver type.
 
The enrolled_status method (below) has a receiver of type {{code|1=Client}} named {{code|1=x}}. The convention is not to use receiver names like self or this, but preferably a short name. For example:<ref name="Knott"/><ref name="nasufi"/><ref name=":0" /><syntaxhighlight lang="v">
struct Client {
enrolled bool
Line 143:
Result types may represent an error returned from a function. Result types are declared by prepending {{code|!}}: {{code|!Type}}
 
Optional types may represent {{code|none}}. Option types prepend {{code|?}} to the type name: {{code|?Type}}.<ref name="Knott"/><ref name="section"/>{{Sfn|Tsoukalos|2022}}<ref name=":0" />
<syntaxhighlight lang="V">
fn something(t string) !string {
Line 158:
 
</syntaxhighlight>
</div>
 
==See also==