Golang來啦 , 作者 Seekload(四哥)
今天週一,注滿活力,加油!
繼續我們的每日一篇,題目可以看上一篇文章或如下截圖:
下面給出上一篇文章的答案:
1.兩段代碼分別輸出:
1[0 0 0 0 0 1 2 3]
2[1 2 3 4]
參考解析:這道題考的是使用 append 向 slice 添加元素,第一段代碼常見的錯誤是 [1 2 3],需要注意。
2.
參考答案:第二個返回值沒有命名。
參考解析:
在函數有多個返回值時,只要有一個返回值有命名,其他的也必須命名。如果有多個返回值必須加上括號();如果只有一個返回值且命名也必須加上括號()。這裡的第一個返回值有命名 sum,第二個沒有命名,所以錯誤。
3.
參考答案:
new(T) 和 make(T,args) 是 Go 語言內建函數,用來分配內存,但適用的類型不同。
new(T) 會為 T 類型的新值分配已置零的內存空間,並返回地址(指針),即類型為 *T 的值。換句話說就是,返回一個指針,該指針指向新分配的、類型為 T 的零值。適用於值類型,如數組、結構體等。
make(T,args) 返回初始化之後的 T 類型的值,這個值並不是 T 類型的零值,也不是指針 *T,是經過初始化之後的 T 的引用。make() 只適用於 slice、map 和 channel.
歡迎在留言區補充!
來看下今天的題目:
1.下面這段代碼能否通過編譯,不能的話原因是什麼;如果能,輸出什麼。
1func main() {
2 list := new([]int)
3 list = append(list, 1)
4 fmt.Println(list)
5}
2.下面這段代碼能否通過編譯,如果可以,輸出什麼?
1func main() {
2 s1 := []int{1, 2, 3}
3 s2 := []int{4, 5}
4 s1 = append(s1, s2)
5 fmt.Println(s1)
6}
3.下面這段代碼能否通過編譯,如果可以,輸出什麼?
1var(
2 size := 1024
3 max_size = size*2
4)
5
6func main() {
7 fmt.Println(size,max_size)
8}
答案以及解析會在下一篇文章中給出,鼓勵大家在留言區留下答案,抱團學習,日拱一卒,每天進步一點!
所有學習上的成功,都只依靠兩件事 -- 策略和堅持,而堅持本身就是最重要的策略!
閱讀更多 互聯網技能圖譜 的文章