golang make 结构
时间: 2023-07-26 18:23:17 浏览: 162
在 Go 语言中,make 可以用来创建一些特定的内置类型,如 slice、map 和 channel。make 的语法如下:
```go
make(T Type, size ...IntegerType) Type
```
其中,T 表示要创建的类型,size 则是类型 T 所需的参数,它们的具体含义根据 T 的不同而有所不同。
对于 slice,size 表示 slice 的长度,可以省略,此时默认值为 0。例如:
```go
// 创建一个长度为 10 的 int 类型 slice
a := make([]int, 10)
```
对于 map,size 表示 map 中初始容量的大小,可以省略,此时默认值为 0。例如:
```go
// 创建一个初始容量为 10 的 string 到 int 的映射
m := make(map[string]int, 10)
```
对于 channel,size 表示 channel 的缓冲区大小,如果省略则表示创建一个无缓冲的 channel。例如:
```go
// 创建一个无缓冲的 string 类型 channel
ch := make(chan string)
```
需要注意的是,使用 make 创建的这些类型都是引用类型,它们在底层都使用了指针,因此使用 make 创建的变量在传递时是按引用传递的。
相关问题
golang make和new的区别
在 Go 中,make 和 new 是用来分别创建不同类型值的两个内置函数。
new 函数用于创建一个指定类型的指针,返回该指针指向一个新分配的零值。也就是说,new(T) 返回一个类型为 *T 的指针,该指针指向 T 的零值。
make 函数用于创建特定类型的引用类型(如 slice、map 和 channel),返回该类型的已初始化值。make(T, args) 返回一个类型为 T 的已初始化值,该值根据类型 T 的不同而有所不同。注意,make 函数只适用于引用类型,因为它需要对数据结构进行初始化,而值类型(如数组和结构体)可以通过简单的变量声明进行初始化。
golang make(map[string]interface{})
在 Golang 中,`make` 是用于创建动态数据结构的内置函数之一。其中,`make` 函数可以用于创建一个空的 `map`,并指定其 key 和 value 的类型。
以下是一个示例代码:
```go
m := make(map[string]interface{})
m["Name"] = "John"
m["Age"] = 30
fmt.Println(m) // Output: map[Name:John Age:30]
```
在上面的代码中,我们使用 `make` 函数创建了一个空的 `map`,并指定其 key 的类型为 `string`,value 的类型为 `interface{}`。`interface{}` 表示该 `map` 中的 value 可以是任意类型。
接着,我们向 `map` 中动态添加了两个字段,分别是 `Name` 和 `Age`。
最后,我们使用 `fmt.Println` 函数打印出 `map` 的值。输出结果为 `map[Name:John Age:30]`。
阅读全文