Section4.39
This commit is contained in:
69
Section4/converting/main.go
Normal file
69
Section4/converting/main.go
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/////////////////////////////////
|
||||||
|
// Converting Types
|
||||||
|
// Go Playground: https://play.golang.org/p/7ZrTlWsLpjt
|
||||||
|
/////////////////////////////////
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
var x = 3 //int type
|
||||||
|
var y = 3.2 //float type
|
||||||
|
|
||||||
|
// x = x * y //compile error -> mismatched types
|
||||||
|
|
||||||
|
x = x * int(y) // converting float64 to int
|
||||||
|
fmt.Println(x) // => 9
|
||||||
|
|
||||||
|
y = float64(x) * y //converting int to float64
|
||||||
|
fmt.Println(y) // => 28.8
|
||||||
|
|
||||||
|
x = int(float64(x) * y)
|
||||||
|
fmt.Println(x) // => 259
|
||||||
|
|
||||||
|
//In Go types with different names are different types.
|
||||||
|
var a int = 5 // same size as int64 or int32 (platform specific)
|
||||||
|
var b int64 = 2 // int and int64 are not the same type
|
||||||
|
|
||||||
|
// a = b // error: cannot use b (type int64) as type int in assignment
|
||||||
|
a = int(b) // converting int64 to int (explicit conversion required)
|
||||||
|
|
||||||
|
// preventing unused variable error
|
||||||
|
_ = a
|
||||||
|
|
||||||
|
//** CONVERTING NUMBERS TO STRINGS AND STRINGS TO NUMBERS **//
|
||||||
|
|
||||||
|
s := string(99) // int to rune (Unicode code point)
|
||||||
|
fmt.Println(s) // => 99, the ascii code for symbol c
|
||||||
|
fmt.Println(string(34234)) // => 34234 is the unicode code point for 薺
|
||||||
|
|
||||||
|
// we cannot convert a float to a string similar to an int to a string
|
||||||
|
// s1 := string(65.1) // error
|
||||||
|
|
||||||
|
// converting float to string
|
||||||
|
var myStr = fmt.Sprintf("%f", 5.12)
|
||||||
|
fmt.Println(myStr) // => 5.120000
|
||||||
|
|
||||||
|
// converting int to string
|
||||||
|
var myStr1 = fmt.Sprintf("%d", 34234)
|
||||||
|
fmt.Println(myStr1) // => 34234
|
||||||
|
|
||||||
|
// converting string to float
|
||||||
|
var result, err = strconv.ParseFloat("3.142", 64)
|
||||||
|
if err == nil {
|
||||||
|
fmt.Printf("Type: %T, Value: %v\n", result, result) // => Type: float64, Value: 3.142
|
||||||
|
} else {
|
||||||
|
fmt.Println("Cannot convert to float64!")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Atoi(string to int) and Itoa(int to string).
|
||||||
|
i, err := strconv.Atoi("-50")
|
||||||
|
s = strconv.Itoa(20)
|
||||||
|
fmt.Printf("i Type is %T, i value is %v\n", i, i) // => i Type is int, i value is -50
|
||||||
|
fmt.Printf("s Type is %T, s value is %q\n", s, s) // => s Type is string, s value is "20"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user