Go面試集錦

1.interface與nil的比較(具體參考)
package main
import (
    "fmt"
)
type People interface {
    Show()
}
type Student struct{}

func (stu *Student) Show() {
}

func live() People {
    var stu *Student
    return stu
}
func main() {
    if live() == nil {
        fmt.Println("AAAAAAA")
    } else {
        fmt.Println(live())
        fmt.Println("BBBBBBB")
    }
}
//  Output: BBBBBBB
//  ##在對(duì)interface實(shí)例化中interface{}中會(huì)存儲(chǔ)對(duì)應(yīng)的類型指針和值指針,So比較會(huì)返回false。
//  ##打印live()后也是nil,其實(shí)過(guò)程中是做了轉(zhuǎn)化。
2.panic與defer之爭(zhēng)
package main
import (
    "fmt"
)
func main() {
    defer func() { fmt.Println("A") }()
    defer func() { fmt.Println("B") }()
    defer func() { fmt.Println("C") }()
    panic("觸發(fā)異常")
    defer func() { fmt.Println("D") }()
}
//  Output : 
//  C
//  B
//  A
//  panic: 觸發(fā)異常 ...
//  ##defer是棧式執(zhí)行,out:CBA;panic之前,正常輸出,之后異常。
3.range循環(huán)對(duì)象變量地址誤區(qū)
package main
import (
    "fmt"
)
func main() {
    pase_student()
}
type student struct {
    Name string
    Age  int
}
func pase_student() {
    m := make(map[string]*student)
    stus := []student{
        {Name: "zhou", Age: 24},
        {Name: "li", Age: 23},
        {Name: "wang", Age: 22},
    }
    fmt.Println(stus)
    for _, stu := range stus {
        m[stu.Name] = &stu
    }
    fmt.Println(m)
}
//  output :
//  [{zhou 24} {li 23} {wang 22}]
//  map[zhou:0xc42000a0e0 li:0xc42000a0e0 wang:0xc42000a0e0]
//  ##打印過(guò)程可以看出m中鍵的值地址一樣,因?yàn)閟tu是一個(gè)變量,三次都把一個(gè)變量的地址賦值給對(duì)應(yīng)鍵。
4.slice的初始化和append的語(yǔ)法
package main
import(
    "fmt"
)
func main() {
    s := make([]int, 3)
    fmt.Println(s)
    s = append(s, 1, 2, 3)
    fmt.Println(s)
}
//  Output:
//  [0 0 0]
//  [0 0 0 1 2 3]
//  ##首先slice初始化會(huì)為0(非基本類型為nil),append顧名思義是追加的意思。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 出處---Go編程語(yǔ)言 歡迎來(lái)到 Go 編程語(yǔ)言指南。本指南涵蓋了該語(yǔ)言的大部分重要特性 Go 語(yǔ)言的交互式簡(jiǎn)介,...
    Tuberose閱讀 18,717評(píng)論 1 46
  • Go語(yǔ)言做Web編程非常方便,并且在開(kāi)發(fā)效率和程序運(yùn)行效率方面都非常優(yōu)秀。相比于Java,其最大的優(yōu)勢(shì)就是簡(jiǎn)便易用...
    暗黑破壞球嘿哈閱讀 9,162評(píng)論 6 66
  • 能力模型 選擇題 [primary] 下面屬于關(guān)鍵字的是()A. funcB. defC. structD. cl...
    _張曉龍_閱讀 25,121評(píng)論 14 224
  • fmt格式化字符串 格式:%[旗標(biāo)][寬度][.精度][arg索引]動(dòng)詞旗標(biāo)有以下幾種:+: 對(duì)于數(shù)值類型總是輸出...
    皮皮v閱讀 1,217評(píng)論 0 3
  • 第一章五個(gè)程序 都很好!但是初學(xué)編程/沒(méi)有其他語(yǔ)言基礎(chǔ)的不容易看懂。 記一遍不熟悉的東西: who = strin...
    暗黑破壞球嘿哈閱讀 1,546評(píng)論 0 10

友情鏈接更多精彩內(nèi)容