Sobes.tech
Senior

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

sobes.tech AI

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

Αυτός ο κώδικας δεν θα μεταγλωττιστεί και θα προκαλέσει σφάλμα μεταγλώττισης.

Ο λόγος είναι ότι οι συμβολοσειρές στο Go είναι αμετάβλητα τμήματα byte. Η προσπάθεια να τροποποιήσετε ένα μεμονωμένο byte μιας συμβολοσειράς, όπως στο s[0] = 'h', δεν είναι δυνατή και θα οδηγήσει σε σφάλμα τύπου "cannot assign to s[0]".

Εάν χρειάζεται να τροποποιήσετε μια συμβολοσειρά, θα πρέπει να τη μετατρέψετε σε τμήμα byte ή rune, να τροποποιήσετε το απαραίτητο στοιχείο και στη συνέχεια να την μετατρέψετε ξανά σε συμβολοσειρά:

package main

import "fmt"

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