Skip to content

Commit 3634ed0

Browse files
committed
start creating an odin lang guide
1 parent beaebe2 commit 3634ed0

1 file changed

Lines changed: 145 additions & 0 deletions

File tree

content/posts/odin-guide.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
---
2+
title: "A guide to the Odin language"
3+
date: "2026-06-01"
4+
description: A general Odin guide for somewhat experienced programmers.
5+
summary: "A general Odin guide for somewhat experienced programmers."
6+
ShowToc: true
7+
TocOpen: true
8+
ShowBreadCrumbs: true
9+
---
10+
11+
## Types
12+
13+
This is a table that hold a comparison of all fundamental types you should know about compared to what they are in other languages:
14+
15+
| Type: | Odin | C# |
16+
| ------------------------ | ------------------ | --------- |
17+
| 16 bit floating | `f16` | |
18+
| 32 bit floating | `f32` | `float` |
19+
| 64 bit floating | `f64` | `double` |
20+
| 128 bit floating | | `decimal` |
21+
| 8 bit integer signed | `i8` | `sbyte` |
22+
| 8 bit integer unsigned | `u8` | `byte` |
23+
| 16 bit integer signed | `i16` | `short` |
24+
| 16 bit integer unsigned | `u16` | `ushort` |
25+
| 32 bit integer signed | `i32` | `int` |
26+
| 32 bit integer unsigned | `u32` | `uint` |
27+
| 64 bit integer signed | `i64` | `long` |
28+
| 64 bit integer unsigned | `u64` | `ulong` |
29+
| 128 bit integer signed | `s128` | |
30+
| 128 bit integer unsigned | `u128` | |
31+
| pointer sized integer | `uintptr` | `nint` |
32+
| boolean | `bool` | `bool` |
33+
| character | `rune` | `char` |
34+
| string | `string`/`cstring` | `string` |
35+
| no type | `any` | `object` |
36+
| type identifier | `typeid` | `Type` |
37+
| null | `nil` | `null` |
38+
39+
40+
## Loops
41+
42+
**Simple for loops:**
43+
44+
Doing loops in Odin is very simple and c like, with some nice syntax choices, like merging for and while loops,
45+
and having a `for value in collection` syntax for things like arrays.
46+
47+
```odin
48+
// basic loop
49+
for i := 0; i < 10; i += 1 {
50+
fmt.println(i)
51+
}
52+
53+
// while loop equivelant
54+
for i < 10 {
55+
fmt.println(i)
56+
}
57+
58+
// range loop
59+
for i in 0..<10 {
60+
fmt.println(i)
61+
}
62+
63+
// array loop (array/slice/dynamic/string/map)
64+
for value in some_array {
65+
fmt.println(value)
66+
}
67+
68+
// named index array loop
69+
for value, index in some_array {
70+
fmt.println(index, value)
71+
}
72+
73+
// named key and value map loop
74+
for key, value in some_map {
75+
fmt.println(key, value)
76+
}
77+
78+
// infinite loop
79+
for {
80+
fmt.println(i)
81+
}
82+
83+
// nested loop
84+
for i := 0; i < 10; i += 1 {
85+
for j := 0; j < 10; j += 1 {
86+
fmt.println(i, j)
87+
}
88+
}
89+
90+
// nested array loop
91+
for outer in outer_array {
92+
for inner in inner_array {
93+
fmt.println(inner, outer)
94+
}
95+
}
96+
97+
// reverse loop
98+
#reverse for x in array {
99+
fmt.println(x)
100+
}
101+
102+
// array loop by reference
103+
for &value in some_array {
104+
value = something // element can be modified
105+
}
106+
107+
// map loop by referende (key can not be referenced)
108+
for key, &value in some_map {
109+
value += 1
110+
}
111+
112+
// single line loops with scope block
113+
for i := 0; i < 10; i += 1 { }
114+
115+
// single line loop (using the do keyword)
116+
for i := 0; i < 10; i += 1 do foo()
117+
```
118+
119+
## Ternary Operator
120+
121+
## References
122+
123+
## Memory
124+
125+
## Pointers
126+
127+
## Modules And Imports
128+
129+
## Standard Library
130+
131+
## Initialization
132+
133+
## Structs
134+
135+
## Casting
136+
137+
## Array Programming (Operator Overloading)
138+
139+
## Arrays / Slices
140+
141+
## Polymorphism (Generics)
142+
143+
## Strings
144+
145+
## Function Pointers / Function Types

0 commit comments

Comments
 (0)