GoLang专题golang

Go内建函数make及切片slice、映射map详解

2018-08-20  本文已影响0人  一根很帅的藤藤菜

make函数

package main
import (
 "fmt"
)
func main() {
 var i *int
 *i=10
 fmt.Println(*i)
}
panic: runtime error: invalid memory address or nil pointer dereference

new

Go提供内建函数new

func new(Type) *Type
func main() {
 var i *int
 i=new(int)
 *i=10
 fmt.Println(*i)
}

make

func make(t Type, size ...IntegerType) Type

make和new对比

i:=0
u:=user{}

切片slice

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}

切片的使用

//创建一个初始元素长度为5的数组切片,元素初始值为0: 
mySlice1 := make([]int, 5) 
//创建一个初始元素长度为5的数组切片,元素初始值为0,并预留10个元素的存储空间: 
mySlice2 := make([]int, 5, 10) 
//切片字面量创建长度为5容量为5的切片,需要注意的是 [ ] 里面不要写数组的容量,因为如果写了个数以后就是数组了,而不是切片了。
mySlice3 := []int{10,20,30,40,50}

映射map

//创建了一个键类型为string、值类型为PersonInfo
myMap = make(map[string] PersonInfo) 
//也可以选择是否在创建时指定该map的初始存储能力,创建了一个初始存储能力为100的map.
myMap = make(map[string] PersonInfo, 100) 
//创建并初始化map的代码.
myMap = map[string] PersonInfo{ 
  "1234": PersonInfo{"1", "Jack", "Room 101,..."}, 
} 

通道channel

//创建有缓存通道
ch := make(chan int, 10)
//创建无缓存通道
ch := make(chan int)
上一篇下一篇

猜你喜欢

热点阅读