Golang::slice和nil的對比分析
我就廢話不多說了,大家還是直接看代碼吧~
package main
import (
"fmt"
)
func main() {
var s1 []int
if s1 == nil {
fmt.Println("s1==nil")
} else {
fmt.Println("s1!=nil")
}
var arr = [5]int{}
s1 = arr[:]
if s1 == nil {
fmt.Println("s1==nil")
} else {
fmt.Println("s1!=nil")
}
}
補充:[golang]nil slice和empty slice的區(qū)別
前言
在開發(fā)的時候,會遇到對于nil slice和empty slice的問題,往往在聲明了slice之后,在使用的時候卻出現(xiàn)了問題。
問題
以下是錯誤的用法,會報數(shù)組越界的錯誤,因為只是聲明了slice,卻沒有給實例化的對象,這一點如果是cpp的vector,便可以直接使用,但是golang 不行。
var slice []int
slice[1] = 0
此時slice的值是nil,這種情況可以用于需要返回slice的函數(shù),當函數(shù)出現(xiàn)異常的時候,保證函數(shù)依然會有nil的返回值。
empty slice 是指slice不為nil,但是slice沒有值,slice的底層的空間是空的,此時的定義如下:
slice := make([]int,0)//或者
slice := []int{}
當我們查詢或者處理一個空的列表的時候,這非常有用,它會告訴我們返回的是一個列表,但是列表內(nèi)沒有任何值。
總之,nil slice 和 empty slice是不同的東西,在編程的需要加以區(qū)分。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
如何使用?Go?和?Excelize?構(gòu)建電子表格
這篇文章主要介紹了如何使用Go和Excelize構(gòu)建電子表格,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
golang容易導(dǎo)致內(nèi)存泄漏的6種情況匯總
內(nèi)存泄漏是我們在生產(chǎn)環(huán)境中必須面臨的問題,下面這篇文章主要給大家介紹了關(guān)于golang容易導(dǎo)致內(nèi)存泄漏的6種情況,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-01-01
golang微服務(wù)框架基礎(chǔ)Gin基本路由使用詳解
這篇文章主要為大家介紹了golang微服務(wù)框架Gin基本路由的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-11-11

