Στη Go οι αριθμοί μπορούν να συγκριθούν με τους παρακάτω τελεστές σύγκρισης και ισότητας.
| Σύγκριση | Τελεστής |
|---|---|
| ίσο | == |
| όχι ίσο | != |
| μικρότερο | < |
| μικρότερο ή ίσο | <= |
| μεγαλύτερο | > |
| μεγαλύτερο ή ίσο | >= |
Το αποτέλεσμα της σύγκρισης είναι πάντα μια Boolean τιμή, δηλαδή είτε true είτε false.
a := 3
a != 4 // true
a > 5 // false
Οι παραπάνω τελεστές σύγκρισης μπορούν να χρησιμοποιηθούν και για τη σύγκριση συμβολοσειρών. Σε αυτή την περίπτωση εφαρμόζεται λεξικογραφική σειρά (όπως σε ένα λεξικό). Για παράδειγμα:
"apple" < "banana" // true
"apple" > "banana" // false
if
Οι συνθήκες στη Go είναι παρόμοιες με τις συνθήκες σε άλλες γλώσσες.
Ο υποκείμενος τύπος κάθε πράξης συνθήκης είναι ο τύπος bool, ο οποίος μπορεί να έχει την τιμή true ή false.
Οι συνθήκες χρησιμοποιούνται συχνά ως μηχανισμοί ελέγχου ροής, για τον έλεγχο διαφόρων περιπτώσεων.
Για να ελέγξεις μια συγκεκριμένη περίπτωση, μπορείς να χρησιμοποιήσεις μια εντολή if, η οποία εκτελεί τον κώδικά της αν η συνθήκη είναι true, όπως εδώ:
var value string
if value == "val" {
return "was val"
}
Σε σενάρια με περισσότερες από μία περιπτώσεις, πολλές εντολές if μπορούν να συνδεθούν μεταξύ τους με τις εντολές else if και else.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
Οι εντολές if μπορούν επίσης να περιλαμβάνουν μια σύντομη εντολή αρχικοποίησης, η οποία μπορεί να χρησιμοποιηθεί για να αρχικοποιήσει μία ή περισσότερες μεταβλητές για την εντολή if.
Για παράδειγμα:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Σημείωση: οποιεσδήποτε μεταβλητές δημιουργούνται στην εντολή αρχικοποίησης βγαίνουν εκτός εμβέλειας μετά το τέλος της εντολής if.
Σε αυτή την άσκηση, θα γράψεις κώδικα που θα σε βοηθήσει να προετοιμαστείς για να αγοράσεις ένα όχημα.
Έχεις τρεις εργασίες: μία για να καθορίσεις αν χρειάζεσαι δίπλωμα οδήγησης, μία για να σε βοηθήσει να επιλέξεις ανάμεσα σε δύο οχήματα και μία για να υπολογίσεις την αποδεκτή τιμή για ένα μεταχειρισμένο όχημα.
Κάποια είδη οχημάτων απαιτούν δίπλωμα οδήγησης για να τα οδηγήσεις.
Θεώρησε ότι μόνο τα είδη "car" και "truck" απαιτούν δίπλωμα, ενώ όλα τα άλλα μπορούν να οδηγηθούν χωρίς δίπλωμα.
Υλοποίησε τη συνάρτηση NeedsLicense(kind), η οποία παίρνει το είδος του οχήματος και επιστρέφει μια Boolean (λογική τιμή) που δείχνει αν χρειάζεσαι δίπλωμα για αυτό το είδος οχήματος.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Αξιολογείς τις επιλογές σου από τα διαθέσιμα οχήματα.
Καταφέρνεις να τις περιορίσεις σε δύο επιλογές, αλλά χρειάζεσαι βοήθεια για να πάρεις την τελική απόφαση.
Για αυτό, υλοποίησε τη συνάρτηση ChooseVehicle(option1, option2), η οποία παίρνει δύο οχήματα ως ορίσματα και επιστρέφει μια απόφαση που περιλαμβάνει την επιλογή που έρχεται πρώτη στη λεξικογραφική σειρά.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Τώρα που πήρες μια απόφαση, θέλεις να βεβαιωθείς ότι θα πάρεις μια δίκαιη τιμή στην αντιπροσωπεία. Επειδή ενδιαφέρεσαι να αγοράσεις ένα μεταχειρισμένο όχημα, η τιμή εξαρτάται από το πόσο παλιό είναι το όχημα. Για μια χονδρική εκτίμηση, θεώρησε ότι αν το όχημα είναι λιγότερο από 3 ετών, κοστίζει το 80% της αρχικής τιμής που είχε όταν ήταν ολοκαίνουριο. Αν είναι τουλάχιστον 10 ετών, κοστίζει το 50%. Αν το όχημα είναι τουλάχιστον 3 ετών αλλά λιγότερο από 10, κοστίζει το 70% της αρχικής τιμής.
Υλοποίησε τη συνάρτηση CalculateResellPrice(originalPrice, age), η οποία εφαρμόζει αυτή τη λογική χρησιμοποιώντας if, else if και else (υπάρχουν και άλλοι τρόποι, αν θέλεις να εξασκηθείς).
Παίρνει την αρχική τιμή και την ηλικία του οχήματος ως ορίσματα και επιστρέφει την εκτιμώμενη τιμή στην αντιπροσωπεία.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Σημείωση: η τιμή επιστροφής είναι float64.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.