Initial commit
This commit is contained in:
31
10-constants/03-refactor-feet-to-meters/main.go
Normal file
31
10-constants/03-refactor-feet-to-meters/main.go
Normal file
@@ -0,0 +1,31 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// EXERCISE
|
||||
//
|
||||
// This program uses magic numbers
|
||||
// Refactor it and use named constants instead
|
||||
|
||||
func main() {
|
||||
arg := os.Args[1]
|
||||
|
||||
feet, _ := strconv.ParseFloat(arg, 64)
|
||||
|
||||
meters := feet * 0.3048
|
||||
yards := feet * 0.3333
|
||||
|
||||
fmt.Printf("%g feet is %g meters.\n", feet, meters)
|
||||
fmt.Printf("%g feet is %g yards.\n", feet, yards)
|
||||
}
|
52
10-constants/03-refactor-feet-to-meters/solution/main.go
Normal file
52
10-constants/03-refactor-feet-to-meters/solution/main.go
Normal file
@@ -0,0 +1,52 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// This program contains a lot of comments
|
||||
// Non-commented version is in /without-comments/main.go
|
||||
|
||||
func main() {
|
||||
// You cannot use this syntax.
|
||||
//
|
||||
// feetInMeters is declared
|
||||
// when the declaration completes,
|
||||
// (at the end of the whole declaration)
|
||||
//
|
||||
// And, it's not easy to read
|
||||
//
|
||||
// const feetInMeters, feetInYards float64 = 0.3048,
|
||||
// feetInMeters / 0.9144
|
||||
|
||||
const (
|
||||
feetInMeters = 0.3048
|
||||
feetInYards = feetInMeters / 0.9144
|
||||
|
||||
// cannot call runtime funcs
|
||||
// feetInYards = math.Round(feetInYards)
|
||||
)
|
||||
|
||||
// Immutable: You cannot assign new values
|
||||
// feetInYards = 0.333333
|
||||
|
||||
arg := os.Args[1]
|
||||
|
||||
feet, _ := strconv.ParseFloat(arg, 64)
|
||||
|
||||
meters := feet * feetInMeters
|
||||
yards := math.Round(feet * feetInYards)
|
||||
|
||||
fmt.Printf("%g feet is %g meters.\n", feet, meters)
|
||||
fmt.Printf("%g feet is %g yards.\n", feet, yards)
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// I copied the same program here but without comments.
|
||||
// So, you can easily read it.
|
||||
|
||||
func main() {
|
||||
const (
|
||||
feetInMeters = 0.3048
|
||||
feetInYards = feetInMeters / 0.9144
|
||||
)
|
||||
|
||||
arg := os.Args[1]
|
||||
|
||||
feet, _ := strconv.ParseFloat(arg, 64)
|
||||
|
||||
meters := feet * feetInMeters
|
||||
yards := math.Round(feet * feetInYards)
|
||||
|
||||
fmt.Printf("%g feet is %g meters.\n", feet, meters)
|
||||
fmt.Printf("%g feet is %g yards.\n", feet, yards)
|
||||
}
|
Reference in New Issue
Block a user