Golang第二天
来源:互联网 发布:ftp防火墙端口设置 编辑:程序博客网 时间:2024/06/07 03:22
关于make的说明
普通形式:v := make([]int,100)
make仅仅适用于map,slice,channel,并且返回的不是指针,应当使用new获取特定的指针
可总结为:
new(T)返回*T指向一个零值T
make(T)返回初始化后的T
Goroutine通过通信来共享内存,而不是通过共享内存来通信
-----------------------------------------
go 中的字符串在赋值之后就不能够更改
----------------------------------------------------
数组也可以通过for range的方式来遍历
数组长度定义之后就不能更改,数组是值类型,每次传递的时候都是传递的是数组的拷贝
创建数组切片的两种方式
1、基于数组
如:var myArray [10]int = [10]int{1,2,3,4,5,6,7,8,9,10}
var mySlice []int = myArray[:5]
通过for range 来遍历
2、直接创建:使用make 关键值
mySlice1 := make([]int,5) // 创建一个初始元素个数为5的数组切片,元素的初始值为0
mySlice2 := make([]int,5, 10)// 创建一个初始元素个数为5的数组切片,元素的初始值为0,并预留10个元素的存储空间
mySlice3 := []int{1,2,3,4,5} // 直接创建并初始化包含5个元素的数组切片
3.动态增长
mySlice2 := []int {1,2,3}
mySlice = append(mySlice,mySlice2...) //...三个点是必须加上的
or mySlice = append(mySlice,4,5,6)
-----------------------------------------------------------------------------------
创建新的Map
type PersonInfo struct{
ID string
Name string
Address string
}
var myMap map[string] PersonInfo
myMap = make(map[string] PersonInfo)
或者 myMap = make(map[string] PersonInfo,100) //初始存储能力可以省略
或者 myMap = map[string] PersonInfo {
"12345": PersonInfo("1","dd","ddddddddd")
}
元素删除
delete(myMap,"222222222222"); 索引值是否存在不会影响结果,但是myMap为空怎会将导致程序抛出异常(panic)
查找元素
value, ok := myMap["123"]
if ok {//通过判断ok是否为true,进而判断
}
--------------------------------------------
switch 后不接表达式,此时switch的功能就等价于if else
-----------------------------------------------
函数
不定参数类型
func myFunc(args...int){ //形如... type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数,这就是所谓的“语法糖”
for _,v := range args{
fmt.printLn("dddddddddddddddddddd");
}
}//从内部实现机理上而言,类型...type本质上是一个数组切片,即[] type
备注:可以使用直接数组切片作为参数传入其中,如下
func myFunc(args []int){
for _,v := range args{
//
}
}
这种方式调用的形式就要发生改变 myFunc([]int{1,2,3,4,5}),但是前者只需muFunc(1,3,4,5,6)
一种新颖的方式:使用interface {},传递任意类型的参数
func myPrint(args...interface{}){
for _, v := range args{
switch args.(type){
case int:
case string:
case int64:
}
}
}
func main(){
var v1 int = 1
var v2 int64 = 342
var v3 string = "dddddddddd"
myPrint(v1,v2,v3)
}
- Golang第二天
- 【GOLANG】第二章 RPC client源码分析
- golang学习第二篇 开发环境的搭建
- Golang
- golang
- golang
- golang
- golang
- GOLANG
- golang
- golang
- golang
- golang
- golang
- golang
- Golang
- Golang
- Golang
- as3中为什么要用各种Listener实现?
- java读取web页面信息
- 伙伴算法
- OpenSSL Base64编码与解码
- 解释与编译
- Golang第二天
- 【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview
- 【无限互联】ios开发之AFNetWorking
- 关于Animation State could not be played的问题
- 关于Httpclient的使用总结
- jQuery选择器:input实现—全选,反选,取消(匹配所有 input, textarea, select 和 button 元素)
- java学习二十三 java循环语句while
- DSP学习总结——中断
- gdb 之set 全局变量