Go数据结构篇
1、基本数据类型
创新互联专业为企业提供花山网站建设、花山做网站、花山网站设计、花山网站制作等企业网站建设、网页设计与制作、花山企业网站模板建站服务,十年花山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for int8
rune // alias for int32,represents a Unicode code point
float32 float64
complex64 complex128
常量定义
2、类型转换
(1)Go语言不允许隐式类型转换(不支持小位数类型向大位数类型转)
(2)别名和原有类型也不能进行隐式类型转换(type MyInt int64 = int64)
3、类型的预定义值
1.math.MaxInt64
2.math.MaxFloat64
3.math.MaxUInt32
4、指针类型
(1)不支持指针运算
(2)string是值类型,其默认的初始化值为空字符串,而不是nil
5、算术运算符
+ - * / % ++ --(不支持前置++ --)
6、比较运算符
#== != = =
(1)比较数组
相同维数且含有形同个数元素的数组才可以比较
每个元素都相同的才相等
7、位运算符
| ^
^ (按位置零) a (^b)
1 ^ 0 1
1 ^ 1 0
0 ^ 1 0
0 ^ 0 0
8、条件与循环
(1)循环
Go 语⾔仅⽀持循环关键字 for
(2)条件
9、数组和切片
数组截取,索引下标从0开始计数
a[开始索引(包含), 结束索引(不包含)]
a := [...]int{1, 2, 3, 4, 5}
a[1:2] //2
a[1:3] //2,3
a[1:len(a)] //2,3,4,5
a[1:] //2,3,4,5
a[:3] //1,2,3
切片内部结构
9、Map
9、字符串
Unicode UTF8
常⽤字符串函数
Go语言中new和 make的区别详解
1、new 的主要特性
首先 new 是内建函数,定义也很简单:
func new(Type) *Type
内建函数 new 用来分配内存,第一个参数是一个类型,不是一个值,返回值是一个指向新分配类型零值的指针
实现一个类似 new 的功能:
func newInt() *int {
var i int
return i
}
someInt := newInt()
函数的功能跟 someInt := new(int) 一模一样。定义 new 开头的函数时,出于约定也应该返回类型的指针。
2、make 的主要特性
make 也是内建函数,定义比 new 多了一个参数,返回值也不同:
func make(Type, size IntegerType) Type
内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型,具体说明如下:
Slice: 第二个参数 size 指定了长度,容量和长度相同。
可以传入第三个参数来指定不同的容量值,但必须不能比长度值小。
比如 make([]int, 0, 10)
Map: 根据 size 大小来初始化分配内存,不过分配后的 map 长度为 0,如果 size 被忽略了,那么会在初始化分配内存时分配一个小尺寸的内存
Channel: 管道缓冲区依据缓冲区容量被初始化。如果容量为 0 或者忽略容量,管道没有缓冲区。
3、总结
new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T)。
数据段保存有如下字符串:string byte
string是Go语言中的基础数据类型。
声明string变量非常简单,常见的方式有以下两种:
声明一个空字符串后再赋值。
var s string。
s = "hello world"。
需要注意的是空字符只是长度为0,但不是nil。不存在值为nil的string。
使用简短变量声明:
s := "hello world" //直接初始化字符串。
双引号与单引号。
字符串不仅可以使用双引号赋值,也可以使用反单引号赋值,它们的区别是在于对特殊字符的处理。
假如我们希望string变量表示下面的字符串,它包括换行符和双引号:
Hi。
this is "Steven"。
1。
2。
使用双引号表示时,需要对特殊字符转义,如下所示:
s:= "Hi, \nthis is \"Steven\"."。
1。
如果使用反单引号时,不需要对特殊符号转义,如下所示:
s := Hi。
this is "Steven"。
需要注意的是,字符串拼接会触发内存分配以及内存拷贝,单行语句拼接多个字符串只分配一次内存。比如上面的语句中,在拼接时,会先计算最终字符串的长度后再分配内存。
类型转换:
项目中,数据经常需要在string和字节[]byte之间转换。
网页名称:go语言数据类型初始化 go 初始化
URL地址:http://lswzjz.com/article/hgocie.html