1. 切片slice
在Go語言中,創(chuàng)建切片有兩種常見的方式:使用 var 聲明空切片和使用 make 函數(shù)。
- 使用 var 聲明空切片:
var s []int
s = append(s, 100)
這種方式會(huì)聲明一個(gè)空的切片,初始時(shí)沒有分配底層數(shù)組。你可以使用 append 函數(shù)向空切片中添加元素,切片會(huì)根據(jù)需要自動(dòng)擴(kuò)容。
- 使用 make 函數(shù)創(chuàng)建切片:
s := make([]int, 0)
這種方式使用 make 函數(shù)創(chuàng)建了一個(gè)初始長度為0的切片,并分配了對應(yīng)的底層數(shù)組。你可以使用 append 函數(shù)向切片中添加元素,切片會(huì)在需要時(shí)自動(dòng)擴(kuò)容。
區(qū)別:
使用 var 聲明空切片時(shí),切片的底層數(shù)組在初始時(shí)不會(huì)被分配。只有在使用 append 函數(shù)添加元素時(shí),才會(huì)根據(jù)需要?jiǎng)討B(tài)分配底層數(shù)組。
使用 make 函數(shù)創(chuàng)建切片時(shí),切片的底層數(shù)組會(huì)在初始時(shí)被分配。通過 make 函數(shù)創(chuàng)建的切片已經(jīng)具有了初始的長度和容量,可以直接使用 append 函數(shù)添加元素。
2. 映射map
在 Go 語言中,創(chuàng)建一個(gè) map 類型的變量有兩種常見的方式:使用 make 函數(shù)和直接聲明。這兩種方式有一些區(qū)別:
- 使用 make 函數(shù)創(chuàng)建 map:
m := make(map[keyType]valueType)
這種方式使用 make 函數(shù)來創(chuàng)建一個(gè)空的 map,并分配了對應(yīng)的內(nèi)存空間。你可以在后續(xù)的代碼中使用賦值操作符(=)來添加鍵值對到 map 中。
- 直接聲明 map 變量:
var m map[keyType]valueType
這種方式只是聲明了一個(gè) map 類型的變量,但沒有分配內(nèi)存空間。在這種情況下,map 變量是一個(gè) nil 值,不能直接使用。你需要使用 make 函數(shù)來分配內(nèi)存空間,然后才能向 map 中添加鍵值對。
以下是兩種方式的示例:
- 使用 make 函數(shù)創(chuàng)建 map:
m := make(map[string]int)
m["a"] = 1
m["b"] = 2
fmt.Println(m) // 輸出: map[a:1 b:2]
- 直接聲明 map 變量:
var m map[string]int
m = make(map[string]int)
m["a"] = 1
m["b"] = 2
fmt.Println(m) // 輸出: map[a:1 b:2]
需要注意的是,無論是使用 make 函數(shù)還是直接聲明 map 變量,都需要在使用前進(jìn)行初始化。否則,如果直接使用一個(gè)空的 map(nil 值),會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。
3. 通道channel
在 Go 語言中,可以使用聲明定義通道變量,但需要在使用前通過 make 函數(shù)進(jìn)行初始化,否則會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。
以下是通過聲明定義通道變量并使用的示例:文章來源:http://www.zghlxwxcb.cn/news/detail-821170.html
var ch chan int // 聲明一個(gè)通道變量
// 初始化通道
ch = make(chan int)
// 使用通道進(jìn)行發(fā)送和接收操作
go func() {
ch <- 42 // 發(fā)送數(shù)據(jù)到通道
}()
val := <-ch // 從通道接收數(shù)據(jù)
fmt.Println(val) // 輸出: 42
在上述示例中,我們首先使用 var 關(guān)鍵字聲明了一個(gè)名為 ch 的通道變量,然后使用 make 函數(shù)對其進(jìn)行初始化。在后續(xù)的代碼中,我們可以使用通道進(jìn)行發(fā)送和接收操作。
需要注意的是,如果在使用通道之前沒有進(jìn)行初始化,即沒有使用 make 函數(shù)對其進(jìn)行初始化,那么在嘗試發(fā)送或接收數(shù)據(jù)時(shí),會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。因此,為了安全起見,在使用通道之前應(yīng)該始終使用 make 函數(shù)進(jìn)行初始化。文章來源地址http://www.zghlxwxcb.cn/news/detail-821170.html
到了這里,關(guān)于【Go語言】常用變量類型的創(chuàng)建的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!