Golang 中国
package main

import (
    "fmt"
)

type sha256 []byte

func test(p []byte) {
    fmt.Println(len(p))
}

func main() {

    var i sha256
    i = make([]byte, 2, 2)
    var j []byte

    i = j
    j = i
    test(i)
}

spec 定义的: https://golang.org/ref/spec#Assignability

其中第二条如果二者有相同的底层类型,而且其中一个不是自定义类型就可以相互赋值。

但是

type number float64

var a float64
var b number
b = a
//  Error: cannot use a (type float64) as type number in assignment

为什么这里就不行了,明明符合第二条规范。


islishude 于 2018-11-07 14:21 修改
0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。