func Printf
func Printf(format string, a ...interface{}) (n int, err error)
Printf 根据格式说明符格式化并写入标准
输出。它返回写入的字节数和任何写入错误
遇到过。
The Go Programming Language
Specification
Variable
declarations
变量声明创建一个或多个变量,绑定
给它们对应的标识符,并给它们一个类型和一个
初始值。
如果给出了表达式列表,则变量被初始化为
遵循分配规则的表达式。否则,每个
变量被初始化为零值。
如果存在类型,则为每个变量指定该类型。否则,
每个变量都被赋予了相应的初始化类型
赋值中的值。如果该值是无类型常量,则它是
首先转换为其默认类型;如果它是一个无类型的布尔值
值,它首先被转换为布尔类型。预先声明的值 nil
不能用于初始化没有显式类型的变量。
Constants
常量可以有类型也可以无类型。字面常量,真,假,
iota,以及某些仅包含无类型的常量表达式
常量操作数是无类型的。
一个常量可以通过常量声明显式地赋予一个类型,或者
转换,或在变量声明或变量中使用时隐式转换
赋值或作为表达式中的操作数。如果
常量值不能表示为相应的值
输入。
一个无类型的常量有一个默认类型,它是
常量在有类型值的上下文中被隐式转换
例如,在 i := 0 这样的短变量声明中是必需的
没有显式类型的地方。无类型的默认类型
常量是 bool、rune、int、float64、complex128 或 string
分别取决于它是布尔值、符文、整数、
浮点数、复数或字符串常量。
Numeric types
数字类型表示整数或浮点值的集合。
一些预先声明的独立于架构的数字类型:
int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
n 位整数的值是 n 位宽,用
二进制补码算法。
还有一些预先声明的数字类型
实现特定的大小:
uint either 32 or 64 bits
int same size as uint
Big 是一个无类型常量。没有可发现的类型。在变量或赋值中使用时,它会被赋予一个类型。无类型常量Big 的默认类型是int。
const Big = 1 << 100
在 Go 中,所有参数都按值传递,就像通过赋值一样。对于fmt.Printf,第二个参数是interface{} 类型。因此,等价地,
var arg2 interface{} = Big // constant 1267650600228229401496703205376 overflows int
fmt.Printf("Big is of type %T\n", arg2)
无类型整数常量的默认类型是int。溢出是编译时错误。
例如,
package main
import "fmt"
const (
// Create a huge number by shifting a 1 bit left 100 places.
// In other words, the binary number that is 1 followed by 100 zeroes.
Big = 1 << 100
)
func main() {
var arg2 interface{} = Big
fmt.Printf("Big is of type %T\n", arg2)
fmt.Printf("Big is of type %T\n", Big)
}
游乐场:https://play.golang.org/p/9tynPTek3wN
输出:
prog.go:12:6: constant 1267650600228229401496703205376 overflows int
prog.go:15:13: constant 1267650600228229401496703205376 overflows int
参考:The Go Blog: Constants