1.int类型和float类型不能匹配
go语言规定不容许在整数型变量和浮点型变量之间进行任何数学运算。谬误例子如下:
var n, m = 21, 2.1 // 上面一行会报错:invalid operation: n / m (mismatched types int and float64) fmt.Println(n / m)
改过后果如下:
var n = 21 / 2.1 fmt.Println(n)
2.int类型和time.Duration类型不能匹配
go语言规定数值运算的操作数必须具备雷同的类型,除非该操作蕴含类型转换或非类型化常量。谬误例子如下:
var n = 3 // 上面一行会报错:invalid operation: timeout * time.Millisecond (mismatched types int and time.Duration) fmt.Println(n * time.Millisecond)
改过后果如下:
// 1. 应用常量 const n = 3 fmt.Println(n * time.Millisecond) // 2. 应用雷同类型 var n time.Duration = 10 fmt.Println(n * time.Millisecond)
3.构造体struct
1)申明指针构造体时,如果未初始化,则初始值为nil,因而只有初始化后,能力拜访字段或为字段赋值。例子如下:
type City struct { Name string} var c *City// 谬误用法, 未初始化, c为nilc.Name = "Osaka" c = &City{}// 初始化后,构造体指针指向某个构造体地址,能力拜访字段,为字段赋值c.Name = "Tokyo" // 因而,罕用的做法如下c := &City{} c.Name = "London"
2)应用Go内置new()函数,能够分配内存来初始化构造休,并返回调配的内存指针,因为曾经初始化了,所以能够间接拜访字段。例子如下:
var c = new(City)c.Name = "NewYork"