Go type 声明变量

1. type 定义

新类型声明格式:(是类型的组合)

package main
import (
    "fmt"
    "reflect"
)
type bigint int64
func main() {
    var x bigint = 100
    fmt.Printf("x 的值是:%v\n", x)
    fmt.Printf("x 的类型是:%v\n", reflect.TypeOf(x))
    type smallint int8
    var y smallint = 1
    fmt.Printf("y 的值是:%v\n", y)
    fmt.Printf("y 的类型是:%v\n", reflect.TypeOf(y))
}
[root@localhost struct]# go run stru1.go 
x 的值是:100
x 的类型是:main.bigint
y 的值是:1
y 的类型是:main.smallint

新类型不是原类型的别名,除拥有相同数据存储结构外,它们之间没有任何关系,不会持有原类型任何信息。除非目标类型是未命名类型,否则必须显式转换。

package main
import (
    "fmt"
    "reflect"
)
type bigint int64
type myslice []int
func main() {
    x := 1234
    var b bigint = bigint(x) // 必须显式转换,除非是常量。
    var b2 int64 = int64(b)
    fmt.Printf("b2 的值是:%v , b2 的类型是:%v\n", b2, reflect.TypeOf(b2))
    var s myslice = []int{1, 2, 3} // 未命名类型,隐式转换。
    var s2 []int = s
    fmt.Printf("s2 的值是:%v , s2 的类型是:%v\n", s2, reflect.TypeOf(s2))
}
[root@localhost struct]# go run stru2.go 
b2 的值是:1234 , b2 的类型是:int64
s2 的值是:[1 2 3] , s2 的类型是:[]int
Copyright © ghostwritten 浙ICP备2020032454号 2022 all right reserved,powered by Gitbook该文件修订时间: 2022-12-22 13:23:35

results matching ""

    No results matching ""