???💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。
非常期待和您一起在這個小小的網絡世界里共同探索、學習和成長。💝💝💝 ?? 歡迎訂閱本專欄 ??
?
前言
小鄭最近在準備Go語言的面試題,通過github和b站等各種學習網站上學習go語言的八股文,并且整理出自己覺得面試可能會問到的知識點,希望通過做筆記的方式來鞏固自己的知識點,并且也希望可以幫助到大家在面試的時候更加得心應手一些,那么從現在開始,和我一起加入八股學習之旅吧!
(1) 切片的初始化與追加
1.2 寫出程序運行的結果
package mainimport ("fmt"
)func main(){s := make([]int, 10)s = append(s, 1, 2, 3)fmt.Println(s)
}
考點
切片追加, make初始化均為0
結果
[0 0 0 0 0 0 0 0 0 0 1 2 3]
(2) slice拼接問題
下面是否可以編譯通過?
test6.go
package mainimport "fmt"func main() {s1 := []int{1, 2, 3}s2 := []int{4, 5}s1 = append(s1, s2)fmt.Println(s1)
}
結果
編譯失敗
兩個slice在append的時候,記住需要進行將第二個slice進行...
打散再拼接。
s1 = append(s1, s2...)
(3) slice中new的使用
下面代碼是否可以編譯通過?
test9.go
package mainimport "fmt"func main() {list := new([]int)list = append(list, 1)fmt.Println(list)
}
結果:
編譯失敗,./test9.go:9:15: first argument to append must be slice; have *[]int
分析:
切片指針的解引用。
可以使用list:=make([]int,0) list類型為切片
或使用list = append(\list, 1) list類型為指針
(4)make和new的區別
相同點:
1)只能存儲一組相同類型的數據結構
2)都是通過下標來訪問,并且有容量長度,長度通過 len 獲取,容量通過 cap 獲取
區別:
1)數組是定長,訪問和復制不能超過數組定義的長度,否則就會下標越界,切片長度和容量可以自動擴容
2)數組是值類型,切片是引用類型,每個切片都引用了一個底層數組,切片本身不能存儲任何數據,都是這底層數組存儲數據,所以修改切片的時候修改的是底層數組中的數據。切片一旦擴容,指向一個新的底層數組,內存地址也就隨之改變
參考文獻? ?地鼠文檔
??????小鄭是普通學生水平,如有紕漏,歡迎各位大佬評論批評指正!😄😄😄
💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍