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"

其余诸如申明一个map不能立刻赋值,类型断言失败会panic,二次敞开一个channel也会panic等比拟常见的就临时不具体介绍啦