Implicit type conversion

As stated in the Go language specification[1], go Go is a strongly typed language. However, although the spec lists all the possible explicit conversions, it does not mention the implicit conversion.

Here is an automated test I wrote to test most of the implicit type conversions in languages like C and Java.

// go run implicit-type.go
package main
import "fmt"

func main(){
    var i int = 1;
    fmt.Printf("Created an integer i = %d\n", i)
    // The following code block will not run
    // Error:
    // cannot use i (type int) as type float32 in assignment
    // var f float32 = i;
    // fmt.Printf("Implicitly convert i to a float %f\n", f)
    //
    var c rune = 'a'
    fmt.Printf("Created a character c = %c\n", c)
    // The following code block will not run
    // Error:
    // cannot use c (type rune) as type int in assignment
    // var c_i int = c
    // fmt.Printf("Implicitly convert a to an int %i\n", c_i)
    var b bool = true
    fmt.Printf("Created a bool b = %s\n", b)
    // The following code will not run
    // Similar error as before
    // i = b
}

Now I see the reason why the language spec does not mention implicit conversion. It is impossible to convert types implicitly.

[1] https://golang.org/ref/spec#Introduction