Go类型零值及初始化

您所在的位置:网站首页 数组如何初始化为0值 Go类型零值及初始化

Go类型零值及初始化

2024-06-16 11:10| 来源: 网络整理| 查看: 265

前言

Go作为一门强类型语言,入门就是要了解类型,有了类型,就可以声明变量、func,实现功能。对于类型而言,首要就是了解其零值。

零值

零值是变量没有做初始化时系统默认设置的值。

基础类型的零值 基础类型零值boolfalseuint/uint8/uint16/uint32/uint640int/int8/int16/int32/int640float32/float640complex64/complex1280(就是0+0i)uintptr0byte0(对应空字符’’)rune0string“” 组合类型的零值 组合类型零值interfacenilslicenilarray定长的指定类型的零值的集合mapnilchannilstruct内部属性所有零值的集合funcnil所有类型的指针类型nil 初始化

一个变量的使用决定了如何声明及初始化。

本文主要说下常见的几种类型的初始化及使用注意点。

slice

slice的零值为nil,nil的slice的len与cap均为0。

nil的slice只能使用append、len、cap等操作,若要直接对具体位置的子元素进行修改则需要使用进行初始化(零值append后也可以修改,不过需判断len是否满足位置条件)。

初始化有两种方式,手动与make构造,主要分别用以固定数据与可变数据。

手动构造

直接构造指定长度的slice,优点是如果是确定且不会变更的数据更简单快捷,缺点是变更的数据需要手动写入一定长度数量的零值,代码可读性变差。

slice := []int{1,2,3,4} var slice = []int{1,2,3,4} //或者 var slice []int slice = []int{1,2,3,4} make构造

make的优势是可以指定slice的长度与容量,对于不确定的数据,代码可读性,非常好,对于固定的数据反而不适宜使用。

slice := make([]typ,len,cap) //typ为子元素类型,len为长度,cap为最大容量

对于二维及多维slice,在操作时需要注意,每一维的零值均是slice,如若要设置/修改指定维的子元素,则需要确认上层至指定维均独立完成初始化。

var matrix [][]int matrix = make([][]int,len,cap) for i:=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3