加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang第二天

发布时间:2020-12-16 18:49:04 所属栏目:大数据 来源:网络整理
导读:关于make的说明 普通形式:v := make([]int,100) make仅仅适用于map,slice,channel,并且返回的不是指针,应当使用new获取特定的指针 可总结为: new(T)返回*T指向一个零值T make(T)返回初始化后的T Goroutine通过通信来共享内存,而不是通过共享内存来通信

关于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,10)//创建一个初始元素个数为5的数组切片,元素的初始值为0,并预留10个元素的存储空间

mySlice3 := []int{1,5} // 直接创建并初始化包含5个元素的数组切片

3.动态增长

mySlice2 := []int {1,3}

mySlice = append(mySlice,mySlice2...) //...三个点是必须加上的

or mySlice = append(mySlice,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,5}),但是前者只需muFunc(1,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)

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读