Implicitly or explicitly typed

Go offsers both ways [1], although it is a strongly typed language. The following shows two different ways of variable declaration.

var i int = 10
i := 10 // same as var i = 10

A quick not about := usage from the official Go tour [2].

Inside a function, the := short assignment statement can be used in place of a var declaration with implicit type.

Outside a function, every statement begins with a keyword (var, func, and so on) and so the := construct is not available.

Since Go is a strongly typed language, it will give variable a default type as Javascript and Python do. The following rule is taken from the Go language specification [1].

An untyped constant has a default type which is the type to which the constant is implicitly converted in contexts where a typed value is required, for instance, in a short variable declaration such as i := 0 where there is no explicit type. The default type of an untyped constant is bool, rune, int, float64, complex128 or string respectively, depending on whether it is a boolean, rune, integer, floating-point, complex, or string constant.

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

[2] https://tour.golang.org/basics/10