name που περιέχει μια συμβολοσειρά και μια μεταβλητή age που περιέχει έναν ακέραιο αριθμό.1greeting := "Γειά σου, "
2name := "Κώστας"
3message := greeting + name // Συνένωση συμβολοσειρών
4fmt.Println(message) // Εκτυπώνει "Γειά σου, Κώστας"
51var num1 int = 5
2var num2 float64 = 3.14
3sum := num1 + int(num2) // Κάνουμε μετατροπή τύπου
4fmt.Println(sum) // Εκτυπώνει 8
51package main
2
3import "fmt"
4
5func main() {
6    var name string = "Δημήτρης"
7    var age int = 28
8    fmt.Printf("Ο %s είναι %d χρονών.\n", name, age)
9}
10var ή := για να δηλώσετε και να αρχικοποιήσετε.1function createCounter() {
2    let count = 0;  // Ο "ιδιωτικός" μετρητής
3    return function() {
4        count += 1;  // Αυξάνει τον μετρητή
5        return count;
6    };
7}
8
9const counter = createCounter();
10console.log(counter()); // 1
11console.log(counter()); // 2
12console.log(counter()); // 3
13createCounter επιστρέφει μια άλλη συνάρτηση που έχει πρόσβαση στη μεταβλητή count.setTimeout.1for (let i = 0; i < 3; i++) {
2    setTimeout(function() {
3        console.log(i); // Εκτυπώνει 0, 1, 2
4    }, 1000);
5}
61function greet(name) {
2    return function() {
3        console.log(`Γειά σου, ${name}!`);
4    };
5}
6
7const greetJohn = greet("Ιωάννης");
8greetJohn(); // Γειά σου, Ιωάννης!
9async/await.1simple_string = "Γεια σου, κόσμε!"
2complex_string = 'Αυτό είναι μια "πολυδιάστατη" συμβολοσειρά.'
31import re
2
3text = "Ο αριθμός είναι 12345."
4match = re.search(r'\d+', text)
5print(match.group())  # εκτυπώνει 12345
6if.1age = 20
2
3if age < 18:
4    print("Είσαι ανήλικος.")
5elif age >= 18 and age < 65:
6    print("Είσαι ενήλικος.")
7else:
8    print("Είσαι συνταξιούχος.")
9==, !=, <, > και λογικούς τελεστές όπως and και or.1fruits = ["μήλο", "πορτοκάλι", "μπανάνα"]
2
3if "μήλο" in fruits:
4    print("Το μήλο είναι στη λίστα.")
51user_input = input("Ποιο είναι το όνομά σου; ")
2
3if user_input:
4    print(f"Γεια σου, {user_input}!")
5else:
6    print("Δεν παρείχες όνομα.")
7times εκτυπώνει μια γραμμή 10 φορές.1def greet(&block)
2  puts "Γειά σου!"
3  block.call if block_given?
4end
5
6greet { puts "Καλημέρα!" }
7greet δέχεται ένα μπλοκ και το εκτελεί εάν υπάρχει.name μπορεί να έχει μια τιμή τύπου String ή να είναι nil.nil.1if name != nil {
2    print("Το όνομα είναι $name!)")
3} else {
4    print("Δεν υπάρχει όνομα.")
5}
6if letif let, που σας επιτρέπει να κάνετε υποχρεωτική "unwrap" της προαιρετικής μεταβλητής.if let1if let actualName = name {
2    print("Το όνομα είναι $actualName)")
3} else {
4    print("Δεν υπάρχει όνομα.")
5}
6guard letguard let είναι μια άλλη μέθοδος που σας επιτρέπει να ελέγξετε την τιμή ενός προαιρετικού.guard let1func printName() {
2    guard let actualName = name else {
3        print("Δεν υπάρχει όνομα.")
4        return
5    }
6    print("Το όνομα είναι $actualName)")
7}
8force unwrap!) μπορεί να προκαλέσει εξαίρεση αν η τιμή είναι nil. Προτιμήστε να χρησιμοποιείτε if let ή guard let.Any (η ρίζα όλων των τύπων στην Kotlin) και θέλετε να την μετατρέψετε σε πιο συγκεκριμένο τύπο, θα χρειαστεί να κάνετε μια μετατροπή.1val anyValue: Any = "Hello, Kotlin"
2val stringValue: String = anyValue as String
3anyValue μετατρέπεται σε τύπο String.as?. Αν η μετατροπή αποτύχει, η μεταβλητή θα πάρει την τιμή null αντί να ρίξει εξαίρεση.as?stringValue θα είναι null, καθώς η μετατροπή δεν είναι δυνατή.as και as?, μπορείτε να βελτιώσετε την ασφάλεια του κώδικα σας και να διευκολύνετε την αναγνωσιμότητά του. Θυμηθείτε, η προσεκτική προσέγγιση στις μετατροπές τύπου είναι το κλειδί για την ανάπτυξη ποιοτικού λογισμικού.as και as;as προκαλεί σφάλμα αν η μετατροπή αποτύχει, ενώ το as? επιστρέφει null.as, ενώ με as? θα επιστρέψει null.as? ή κάνοντας έλεγχο του τύπου πριν τη μετατροπή.