在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
输出
s1 将创建一个[]int类型的匿名变量,初始化为[]int类型的零值,然后返回变量地址,返回的指针类型为 *[]int 。 s2 声明创建一个int指针类型的空切片。 s3 声明创建一个int类型的切片,初始化字面量1,2。 s1是指针地址,s2是存放指针地址的切片,s3就是一个切片。 用new创建变量和普通变量声明语句方式创建变量没有什么区别,除了不需要声明一个临时变量的名字外,还可以在表达式中使用new(T)。new函数类似是一种语法糖,直接返回变量的地址,而不是一个新的基础概念。 下面的两个newInt函数有着相同的行为:
每次调用new函数都是返回一个新的变量的地址,因此下面两个地址是不同的:
当然也可能有特殊情况:如果两个类型都是空的,也就是说类型的大小是0,例如 new函数使用常见相对比较少,因为对应结构体来说,可以直接使用字面量语法创建新变量的方法会更灵活。 由于new只是一个预定义的函数,它并不是一个关键字,因此可以将new名字重新定义为别的类型。例如下面的例子:
由于new被定义为int类型的变量名,因此在delete函数内部是无法使用内置的new函数的。 问题二 s2如何才能像s3一样直接赋值?s2是int类型指针切片,直接存放int类型的指针地址就好 问题三 s2赋完值之后如何才能打印出来值类型?参考:Go语言fmt.Sprintf、fmt.Printf(格式化输出)
输出
|
请发表评论