海外网站怎么浏览,wordpress的链接怎么设置,几个免费建立网站的平台,商城网站带宽控制文章目录 GO数据类型数组array切片slice集合map结构体make和new GO数据类型 在go语言中#xff0c;定义的全局数据结构不使用不会报错#xff0c;定义的局部数据结构必须使用#xff0c;否则报错#xff1b;建议定义的数据类型就要使用#xff0c;要么不定义。 数组array … 文章目录 GO数据类型数组array切片slice集合map结构体make和new GO数据类型 在go语言中定义的全局数据结构不使用不会报错定义的局部数据结构必须使用否则报错建议定义的数据类型就要使用要么不定义。 数组array
类似于python的list有下标查找方法
array与list的区别 array是固定长度的数组没有append、pop等方法array作为值传入函数或者是赋值给变量的是原始值拷贝不会任何修改不会影响原始值
var l1 [5]int [5]int{1, 2, 3, 4, 5} //定义
l2 : [5]int{1, 2, 3} //初始化(: 只能用于函数内部)切片slice
可以进行切割的数组, 能使用append方法使用后会返回添加后的切片slice是底层数组作为值作为值传入函数或者是赋值给变量时会改变原始值。
var s []string
var s []string [a, b]
b s[:2] //前包后不包
s append(s, c) //增大了切片的最大容量len(s)是4cap(s)是6集合map
类似与python的字典能通过key进行增删改查 map与dict的区别 map是无序的key-value集合遍历时会无序的返回而dict是有序的按顺序遍历map定义时要说明key和value的类型dict不需要map通过键获取键值时如果键不存在则返回该键类型的0值如键是int类型的返回值是0而dict通过键获取值键不存在则会报错使用get方法获取时返回None 注意 map定义时必须要初始化或者使用make来分配内存否则会报错因为没有分配内存空间;map是应用类型如果将他传递给一个函数或是赋值给另一个变量他们指向的都是底层数据结构一个变化都会变化
var m map[int]string{1: a,2: b, //结尾括号另起一行时结尾需要有“,”同一行则不需要
}var m1 make(map[int]string)m1 : make(map[int]string) //:用于函数内部
m1[1] a
// m {1: a, 2: b} //不允许这种赋值方式结构体
结构体自定义数据类型的属性和方法是go实现面向对象的方法通过type来定义
type Person struct{name stringage int
}var person Person //实例化结构体实例化才会分配内存才能调用内部的属性和方法 要创建结构体的方法需要将结构体作为接收者来定义函数此时该函数就是该结构体的方法 接收者有值接收者和指针接收者当是值类型接收者时实例化不能改变当前实例的属性或方法指针类型接收者则能改变 type Person struct{Name stringAge int
}//receiver是值类型
func (p Person) SetName(word string) {p.Name word
}//receiver是指针类型
func (p *Person) SetAge(age int){p.Age age
}var p1 Person
p1.SetName(lili)
fmt.Println(p1.Name) //空字符串
p1.SetAge(12)
fmt.Println(p1.Age) //12注意结构体的属性和方法首字母为大写才能被模块外调用否则只能在模块内调用 make和new
make和new都可以给定义的数据类型分配空间
区别 make只能给slice、map、channel分配空间make分配完后返回的是数据类型的值是对数据类型的初始化new返回的是指针很少使用到new