a. 使用var
var c1 chan int
fmt.Println(c1) // <nil>
var c2 map[string]int
fmt.Println(c2) // map[]
c2[“a”] = 1 // error :panic: assignment to entry in nil map
var c3 [] int
fmt.Println(c3) // []
c3[0] = 1 // error :panic: runtime error: index out of range以上用var初始化三种类型,仅仅是声明,并不能使用b. 使用 var 或者 :=
var c2 map[string]int = map[string]int{}
fmt.Println(c2) // map[]
var c3 []int = [] int {1,2,3 }
var c4 []int = arr[:]
var a,b ,c = 3, true,"abc"
fmt.Println(a,b,c)
a1,b2 ,c3 := 3, true,"abc"
fmt.Println(a1,b2,c3)左边都可以换成 c := 在方法内部可以用:=定义一个变量,但是在方法外部不能,只能使用”var s =1” ,在方法外部的每一行都需要关键字,比如var ,func等
不管方法内还是方法外,多个变量声明时都可以使用:
var (
a =1
b =2
c =3
)c. make
- 创建切片
s = make([] int ,10 )- 创建map
m = make(map[string]int)- 创建管道
c = make(chan int )创建: t1 := make([] int ,10)
fmt.Println(t1) // [0 0 0 0 0 0 0 0 0 0]
t3 := make(chan int)
fmt.Println(t3) // 0xc42007a060
t4 := make(map[string]int)
fmt.Println(t4) // map[]组合: t6 := make([]map[string]int ,5)
fmt.Println(t6) // [map[] map[] map[] map[] map[]]
//t6[0]["a"] = 1 // error panic: assignment to entry in nil map
t6[0] = make(map[string]int)
t6[0]["a"] = 1
fmt.Println(t6) //[map[a:1] map[] map[] map[] map[]]
t5 := make([] chan int ,5)
fmt.Println(t5) // [<nil> <nil> <nil> <nil> <nil>]
t7 := make([] User ,5)
fmt.Println(t7) // [{ 0 0 } { 0 0 } { 0 0 } { 0 0 } { 0 0 }]
t7[0].Age = 1
fmt.Println(t7) // [{ 1 0 } { 0 0 } { 0 0 } { 0 0 } { 0 0 }]可见,map和chan的类型切片,里面的每个元素是不能直接用的,因为是nil,使用的时候必须对每个元素进行再次make但是结构体的切片中,每个元素是可以直接用的
func main() {
s := make([]int, 5)
s = append(s, 1, 2, 3)
fmt.Println(s) // [0 0 0 0 0 1 2 3] ,而不是[1 2 3]
}make初始化是由默认值的哦,此处默认值为0
本文深入探讨了Go语言中不同数据类型的初始化方式,包括使用var声明、make创建切片、映射和通道的方法,并通过示例代码展示了如何正确初始化各种类型。
3万+

被折叠的 条评论
为什么被折叠?



