From 9661393c9d3c7a9a7f443d85df5d1bc7513a9801 Mon Sep 17 00:00:00 2001 From: sebastian Date: Fri, 29 Sep 2023 14:50:16 +0200 Subject: [PATCH] Section4.39 --- Section4/converting/main.go | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Section4/converting/main.go diff --git a/Section4/converting/main.go b/Section4/converting/main.go new file mode 100644 index 0000000..57d7a48 --- /dev/null +++ b/Section4/converting/main.go @@ -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" +}