Sobes.tech
Senior

// Ερώτηση 1. Τι θα εμφανιστεί στην οθόνη; package main import "fmt" func main() { s := "Hello world" s[0] = "h" if err != nil { fmt.Println("Σφάλμα", err) } fmt.Println(s) }

sobes.tech AI

Απάντηση από AI

Ο κώδικας δεν θα μεταγλωττιστεί. Στη Go, οι συμβολοσειρές (string) είναι αμετάβλητες, δεν μπορείτε να αναθέσετε μια τιμή σε ένα μεμονωμένο byte της συμβολοσειράς, π.χ. s[0] = "h" θα προκαλέσει σφάλμα μεταγλώττισης.

Επιπλέον, η μεταβλητή err δεν έχει δηλωθεί, επομένως η συνθήκη if err != nil {} θα προκαλέσει επίσης σφάλμα.

Ο σωστός τρόπος να αλλάξετε μια συμβολοσειρά είναι να δημιουργήσετε μια νέα συμβολοσειρά, π.χ.:

package main

import "fmt"

func main() {
    s := "Hello world"
    s = "h" + s[1:]
    fmt.Println(s) // θα εμφανίσει "hello world"
}

Έτσι, ο αρχικός κώδικας θα οδηγήσει σε σφάλματα μεταγλώττισης και δεν θα εμφανίσει τίποτα.