1. 程式人生 > >golang精選100題帶答案

golang精選100題帶答案

擁有 包名 type 尋找 優勢 RKE 之間 bottom mat

能力模型

級別模型
初級

primary

熟悉基本語法,能夠看懂代碼的意圖;

在他人指導下能夠完成用戶故事的開發,編寫的代碼符合CleanCode規範;

中級

intermediate

能夠獨立完成用戶故事的開發和測試;

能夠嗅出代碼的壞味道,並知道如何重構達成目標;

高級

senior

能夠開發出高質量高性能的代碼;

能夠熟練使用高級特性,開發編程框架或測試框架;

選擇題

  1. 【初級】 下面屬於關鍵字的是()

    A. func

    B. def

    C. struct

    D. class

    參考答案:AC

  2. 【初級】 定義一個包內全局字符串變量,下面語法正確的是 ()

    A. var str string

    B. str := ""

    C. str = ""

    D. var str = ""

    參考答案:AD

  3. 【初級】 通過指針變量 p 訪問其成員變量 name,下面語法正確的是()

    A. p.name

    B. (*p).name

    C. (&p).name

    D. p->name

    參考答案:AB

  4. 【初級】 關於接口和類的說法,下面說法正確的是()

    A. 一個類只需要實現了接口要求的所有函數,我們就說這個類實現了該接口

    B. 實現類的時候,只需要關心自己應該提供哪些方法,不用再糾結接口需要拆得多細才合理

    C. 類實現接口時,需要導入接口所在的包

    D. 接口由使用方按自身需求來定義,使用方無需關心是否有其他模塊定義過類似的接口

    參考答案:ABD

  5. 【初級】 關於字符串連接,下面語法正確的是()

    A. str := ‘abc’ + ‘123’

    B. str := "abc" + "123"

    C. str := ‘123‘ + "abc"

    D. fmt.Sprintf("abc%d", 123)

    參考答案:BD

  6. 【初級】 關於協程,下面說法正確是()

    A. 協程和線程都可以實現程序的並發執行

    B. 線程比協程更輕量級

    C. 協程不存在死鎖問題

    D. 通過channel來進行協程間的通信

    參考答案:AD

  7. 【中級】 關於init函數,下面說法正確的是()

    A. 一個包中,可以包含多個init函數

    B. 程序編譯時,先執行導入包的init函數,再執行本包內的init函數

    C. main包中,不能有init函數

    D. init函數可以被其他函數調用

    參考答案:AB

  8. 【初級】 關於循環語句,下面說法正確的有()

    A. 循環語句既支持for關鍵字,也支持while和do-while

    B. 關鍵字for的基本使用方法與C/C++中沒有任何差異

    C. for循環支持continue和break來控制循環,但是它提供了一個更高級的break,可以選擇中斷哪一個循環

    D. for循環不支持以逗號為間隔的多個賦值語句,必須使用平行賦值的方式來初始化多個變量

    參考答案:CD

  9. 【中級】 對於函數定義:

    func add(args ...int) int { sum := 0 for _, arg := range args { sum += arg } return sum}

    下面對add函數調用正確的是()

    A. add(1, 2)

    B. add(1, 3, 7)

    C. add([]int{1, 2})

    D. add([]int{1, 3, 7}...)

    參考答案:ABD

  10. 【初級】 關於類型轉化,下面語法正確的是()

    A.

    type MyInt intvar i int = 1var j MyInt = i

    B.

    type MyInt intvar i int = 1var j MyInt = (MyInt)i

    C.

    type MyInt intvar i int = 1var j MyInt = MyInt(i)

    D.

    type MyInt intvar i int = 1var j MyInt = i.(MyInt)

    參考答案:C

  11. 【初級】 關於局部變量的初始化,下面正確的使用方式是()

    A. var i int = 10

    B. var i = 10

    C. i := 10

    D. i = 10

    參考答案:ABC

  12. 【初級】 關於const常量定義,下面正確的使用方式是()

    A.

    const Pi float64 = 3.14159265358979323846const zero = 0.0

    B.

    const (size int64 = 1024eof = -1 )

    C.

    const (ERR_ELEM_EXIST error = errors.New("element already exists")ERR_ELEM_NT_EXIST error = errors.New("element not exists"))

    D.

    const u, v float32 = 0, 3 const a, b, c = 3, 4, "foo"

    參考答案:ABD

  13. 【初級】 關於布爾變量b的賦值,下面錯誤的用法是()

    A. b = true

    B. b = 1

    C. b = bool(1)

    D. b = (1 == 2)

    參考答案:BC

  14. 【中級】 下面的程序的運行結果是()

    func main() { if (true) { defer fmt.Printf("1")} else { defer fmt.Printf("2")}fmt.Printf("3")}

    A. 321

    B. 32

    C. 31

    D. 13

    參考答案:C

  15. 【初級】 關於switch語句,下面說法正確的有()

    A. 條件表達式必須為常量或者整數

    B. 單個case中,可以出現多個結果選項

    C. 需要用break來明確退出一個case

    D. 只有在case中明確添加fallthrough關鍵字,才會繼續執行緊跟的下一個case

    參考答案:BD

  16. 【中級】 golang中沒有隱藏的this指針,這句話的含義是()

    A. 方法施加的對象顯式傳遞,沒有被隱藏起來

    B. golang沿襲了傳統面向對象編程中的諸多概念,比如繼承、虛函數和構造函數

    C. golang的面向對象表達更直觀,對於面向過程只是換了一種語法形式來表達

    D. 方法施加的對象不需要非得是指針,也不用非得叫this

    參考答案:ACD

  17. 【中級】 golang中的引用類型包括()

    A. 數組切片

    B. map

    C. channel

    D. interface

    參考答案:ABCD

  18. 【中級】 golang中的指針運算包括()

    A. 可以對指針進行自增或自減運算

    B. 可以通過“&”取指針的地址

    C. 可以通過“*”取指針指向的數據

    D. 可以對指針進行下標運算

    參考答案:BC

  19. 【初級】 關於main函數(可執行程序的執行起點),下面說法正確的是()

    A. main函數不能帶參數

    B. main函數不能定義返回值

    C. main函數所在的包必須為main包

    D. main函數中可以使用flag包來獲取和解析命令行參數

    參考答案:ABCD

  20. 【中級】 下面賦值正確的是()

    A. var x = nil

    B. var x interface{} = nil

    C. var x string = nil

    D. var x error = nil

    參考答案:BD

  21. 【中級】 關於整型切片的初始化,下面正確的是()

    A. s := make([]int)

    B. s := make([]int, 0)

    C. s := make([]int, 5, 10)

    D. s := []int{1, 2, 3, 4, 5}

    參考答案:BCD

  22. 【中級】 從切片中刪除一個元素,下面的算法實現正確的是()

    A.

    func (s *Slice)Remove(value interface{}) error {for i, v := range *s { if isEqual(value, v) { if i== len(*s) - 1 { *s = (*s)[:i] }else { *s = append((*s)[:i],(*s)[i + 2:]...) } return nil }}return ERR_ELEM_NT_EXIST}

    B.

    func (s *Slice)Remove(value interface{}) error {for i, v := range *s { if isEqual(value, v) { *s = append((*s)[:i],(*s)[i + 1:]) return nil }}return ERR_ELEM_NT_EXIST}

    C.

    func (s *Slice)Remove(value interface{}) error {for i, v := range *s { if isEqual(value, v) { delete(*s, v) return nil }}return ERR_ELEM_NT_EXIST}

    D.

    func (s *Slice)Remove(value interface{}) error {for i, v := range *s { if isEqual(value, v) { *s = append((*s)[:i],(*s)[i + 1:]...) return nil }}return ERR_ELEM_NT_EXIST}

    參考答案:D

  23. 【初級】 對於局部變量整型切片x的賦值,下面定義正確的是()

    A.

    x := []int{1, 2, 3,4, 5, 6,}

    B.

    x := []int{1, 2, 3,4, 5, 6}

    C.

    x := []int{1, 2, 3,4, 5, 6}

    D.

    x := []int{1, 2, 3, 4, 5, 6,}

    參考答案:ACD

  24. 【初級】 關於變量的自增和自減操作,下面語句正確的是()

    A.

    i := 1i++

    B.

    i := 1j = i++

    C.

    i := 1++i

    D.

    i := 1i--

    參考答案:AD

  25. 【中級】 關於函數聲明,下面語法錯誤的是()

    A. func f(a, b int) (value int, err error)

    B. func f(a int, b int) (value int, err error)

    C. func f(a, b int) (value int, error)

    D. func f(a int, b int) (int, int, error)

    參考答案:C

  26. 【中級】 如果Add函數的調用代碼為:

    func main() {var a Integer = 1var b Integer = 2var i interface{} = &asum := i.(*Integer).Add(b)fmt.Println(sum)}

    則Add函數定義正確的是()

    A.

    type Integer intfunc (a Integer) Add(b Integer) Integer { return a + b}

    B.

    type Integer intfunc (a Integer) Add(b *Integer) Integer { return a + *b}

    C.

    type Integer intfunc (a *Integer) Add(b Integer) Integer { return *a + b}

    D.

    type Integer intfunc (a *Integer) Add(b *Integer) Integer { return *a + *b}

    參考答案:AC

  27. 【中級】 如果Add函數的調用代碼為:

    func main() {var a Integer = 1var b Integer = 2var i interface{} = asum := i.(Integer).Add(b)fmt.Println(sum)}

    則Add函數定義正確的是()

    A.

    type Integer intfunc (a Integer) Add(b Integer) Integer { return a + b}

    B.

    type Integer intfunc (a Integer) Add(b *Integer) Integer { return a + *b}

    C.

    type Integer intfunc (a *Integer) Add(b Integer) Integer { return *a + b}

    D.

    type Integer intfunc (a *Integer) Add(b *Integer) Integer { return *a + *b}

    參考答案:A

  28. 【中級】 關於GetPodAction定義,下面賦值正確的是()

    type Fragment interface {Exec(transInfo *TransInfo) error}type GetPodAction struct {}func (g GetPodAction) Exec(transInfo *TransInfo) error {...return nil}

    A. var fragment Fragment = new(GetPodAction)

    B. var fragment Fragment = GetPodAction

    C. var fragment Fragment = &GetPodAction{}

    D. var fragment Fragment = GetPodAction{}

    參考答案:ACD

  29. 【中級】 關於GoMock,下面說法正確的是()

    A. GoMock可以對interface打樁

    B. GoMock可以對類的成員函數打樁

    C. GoMock可以對函數打樁

    D. GoMock打樁後的依賴註入可以通過GoStub完成

    參考答案:AD

  30. 【中級】 關於接口,下面說法正確的是()

    A. 只要兩個接口擁有相同的方法列表(次序不同不要緊),那麽它們就是等價的,可以相互賦值

    B. 如果接口A的方法列表是接口B的方法列表的子集,那麽接口B可以賦值給接口A

    C. 接口查詢是否成功,要在運行期才能夠確定

    D. 接口賦值是否可行,要在運行期才能夠確定

    參考答案:ABC

  31. 【初級】 關於channel,下面語法正確的是()

    A. var ch chan int

    B. ch := make(chan int)

    C. <- ch

    D. ch <-

    參考答案:ABC

  32. 【初級】 關於同步鎖,下面說法正確的是()

    A. 當一個goroutine獲得了Mutex後,其他goroutine就只能乖乖的等待,除非該goroutine釋放這個Mutex

    B. RWMutex在讀鎖占用的情況下,會阻止寫,但不阻止讀

    C. RWMutex在寫鎖占用情況下,會阻止任何其他goroutine(無論讀和寫)進來,整個鎖相當於由該goroutine獨占

    D. Lock()操作需要保證有Unlock()或RUnlock()調用與之對應

    參考答案:ABC

  33. 【中級】 golang中大多數數據類型都可以轉化為有效的JSON文本,下面幾種類型除外()

    A. 指針

    B. channel

    C. complex

    D. 函數

    參考答案:BCD

  34. 【中級】 關於go vendor,下面說法正確的是()

    A. 基本思路是將引用的外部包的源代碼放在當前工程的vendor目錄下面

    B. 編譯go代碼會優先從vendor目錄先尋找依賴包

    C. 可以指定引用某個特定版本的外部包

    D. 有了vendor目錄後,打包當前的工程代碼到其他機器的$GOPATH/src下都可以通過編譯

    參考答案:ABD

  35. 【初級】 flag是bool型變量,下面if表達式符合編碼規範的是()

    A. if flag == 1

    B. if flag

    C. if flag == false

    D. if !flag

    參考答案:BD

  36. 【初級】 value是整型變量,下面if表達式符合編碼規範的是()

    A. if value == 0

    B. if value

    C. if value != 0

    D. if !value

    參考答案:AC

  37. 【中級】 關於函數返回值的錯誤設計,下面說法正確的是()

    A. 如果失敗原因只有一個,則返回bool

    B. 如果失敗原因超過一個,則返回error

    C. 如果沒有失敗原因,則不返回bool或error

    D. 如果重試幾次可以避免失敗,則不要立即返回bool或error

    參考答案:ABCD

  38. 【中級】 關於異常設計,下面說法正確的是()

    A. 在程序開發階段,堅持速錯,讓程序異常崩潰

    B. 在程序部署後,應恢復異常避免程序終止

    C. 一切皆錯誤,不用進行異常設計

    D. 對於不應該出現的分支,使用異常處理

    參考答案:ABD

  39. 【中級】 關於slice或map操作,下面正確的是()

    A.

    var s []ints = append(s,1)

    B.

    var m map[string]intm["one"] = 1

    C.

    var s []ints = make([]int, 0)s = append(s,1)

    D.

    var m map[string]intm = make(map[string]int)m["one"] = 1

    參考答案:ACD

  40. 【中級】 關於channel的特性,下面說法正確的是()

    A. 給一個 nil channel 發送數據,造成永遠阻塞

    B. 從一個 nil channel 接收數據,造成永遠阻塞

    C. 給一個已經關閉的 channel 發送數據,引起 panic

    D. 從一個已經關閉的 channel 接收數據,如果緩沖區中為空,則返回一個零值

    參考答案:ABCD

  41. 【中級】 關於無緩沖和有沖突的channel,下面說法正確的是()

    A. 無緩沖的channel是默認的緩沖為1的channel

    B. 無緩沖的channel和有緩沖的channel都是同步的

    C. 無緩沖的channel和有緩沖的channel都是非同步的

    D. 無緩沖的channel是同步的,而有緩沖的channel是非同步的

    參考答案:D

  42. 【中級】 關於異常的觸發,下面說法正確的是()

    A. 空指針解析

    B. 下標越界

    C. 除數為0

    D. 調用panic函數

    參考答案:ABCD

  43. 【中級】 關於cap函數的適用類型,下面說法正確的是()

    A. array

    B. slice

    C. map

    D. channel

    參考答案:ABD

  44. 【中級】 關於beego框架,下面說法正確的是()

    A. beego是一個golang實現的輕量級HTTP框架

    B. beego可以通過註釋路由、正則路由等多種方式完成url路由註入

    C. 可以使用bee new工具生成空工程,然後使用bee run命令自動熱編譯

    D. beego框架只提供了對url路由的處理, 而對於MVC架構中的數據庫部分未提供框架支持

    參考答案:ABC

  45. 【中級】 關於goconvey,下面說法正確的是()

    A. goconvey是一個支持golang的單元測試框架

    B. goconvey能夠自動監控文件修改並啟動測試,並可以將測試結果實時輸出到web界面

    C. goconvey提供了豐富的斷言簡化測試用例的編寫

    D. goconvey無法與go test集成

    參考答案:ABC

  46. 【中級】 關於go vet,下面說法正確的是()

    A. go vet是golang自帶工具go tool vet的封裝

    B. 當執行go vet database時,可以對database所在目錄下的所有子文件夾進行遞歸檢測

    C. go vet可以使用絕對路徑、相對路徑或相對GOPATH的路徑指定待檢測的包

    D. go vet可以檢測出死代碼

    參考答案:ACD

  47. 【中級】 關於map,下面說法正確的是()

    A. map反序列化時json.unmarshal的入參必須為map的地址

    B. 在函數調用中傳遞map,則子函數中對map元素的增加不會導致父函數中map的修改

    C. 在函數調用中傳遞map,則子函數中對map元素的修改不會導致父函數中map的修改

    D. 不能使用內置函數delete刪除map的元素

    參考答案:A

  48. 【中級】 關於GoStub,下面說法正確的是()

    A. GoStub可以對全局變量打樁

    B. GoStub可以對函數打樁

    C. GoStub可以對類的成員方法打樁

    D. GoStub可以打動態樁,比如對一個函數打樁後,多次調用該函數會有不同的行為

    參考答案:ABD

  49. 【初級】 關於select機制,下面說法正確的是()

    A. select機制用來處理異步IO問題

    B. select機制最大的一條限制就是每個case語句裏必須是一個IO操作

    C. golang在語言級別支持select關鍵字

    D. select關鍵字的用法與switch語句非常類似,後面要帶判斷條件

    參考答案:ABC

  50. 【初級】 關於內存泄露,下面說法正確的是()

    A. golang有自動垃圾回收,不存在內存泄露

    B. golang中檢測內存泄露主要依靠的是pprof包

    C. 內存泄露可以在編譯階段發現

    D. 應定期使用瀏覽器來查看系統的實時內存信息,及時發現內存泄露問題

    參考答案:BD

填空題

  1. 【初級】 聲明一個整型變量i__________

    參考答案:var i int

  2. 【初級】 聲明一個含有10個元素的整型數組a__________

    參考答案:var a [10]int

  3. 【初級】 聲明一個整型數組切片s__________

    參考答案:var s []int

  4. 【初級】 聲明一個整型指針變量p__________

    參考答案:var p *int

  5. 【初級】 聲明一個key為字符串型value為整型的map變量m__________

    參考答案:var m map[string]int

  6. 【初級】 聲明一個入參和返回值均為整型的函數變量f__________

    參考答案:var f func(a int) int

  7. 【初級】 聲明一個只用於讀取int數據的單向channel變量ch__________

    參考答案:var ch <-chan int

  8. 【初級】 假設源文件的命名為slice.go,則測試文件的命名為__________

    參考答案:slice_test.go

  9. 【初級】 go test要求測試函數的前綴必須命名為__________

    參考答案:Test

  10. 【中級】 下面的程序的運行結果是__________

    for i := 0; i < 5; i++ {defer fmt.Printf("%d ", i)}

    參考答案:4 3 2 1 0

  11. 【中級】 下面的程序的運行結果是__________

    func main() {x := 1{ x := 2 fmt.Print(x)}fmt.Println(x)}

    參考答案:21

  12. 【中級】 下面的程序的運行結果是__________

    func main() {strs := []string{"one", "two", "three"}for _, s := range strs { go func() { time.Sleep(1 * time.Second) fmt.Printf("%s ", s) }()}time.Sleep(3 * time.Second)}

    參考答案:three three three

  13. 【中級】 下面的程序的運行結果是__________

    func main() { x := []string{"a", "b", "c"}for v := range x { fmt.Print(v)}}

    參考答案:012

  14. 【中級】 下面的程序的運行結果是__________

    func main() { x := []string{"a", "b", "c"}for _, v := range x { fmt.Print(v)}}

    參考答案:abc

  15. 【初級】 下面的程序的運行結果是__________

    func main() { i := 1j := 2i, j = j, ifmt.Printf("%d%dn", i, j)}

    參考答案:21

  16. 【初級】 下面的程序的運行結果是__________

    func incr(p *int) int {*p++ return *p }func main() { v := 1 incr(&v)fmt.Println(v)}

    參考答案:2

  17. 【初級】 啟動一個goroutine的關鍵字是__________

    參考答案:go

  18. 【中級】 下面的程序的運行結果是__________

    type Slice []intfunc NewSlice() Slice {return make(Slice, 0)}func (s* Slice) Add(elem int) *Slice {*s = append(*s, elem)fmt.Print(elem)return s}func main() { s := NewSlice()defer s.Add(1).Add(2)s.Add(3)}

    參考答案:132

判斷題

  1. 【初級】 數組是一個值類型()

    參考答案:T

  2. 【初級】 使用map不需要引入任何庫()

    參考答案:T

  3. 【中級】 內置函數delete可以刪除數組切片內的元素()

    參考答案:F

  4. 【初級】 指針是基礎類型()

    參考答案:F

  5. 【初級】 interface{}是可以指向任意對象的Any類型()

    參考答案:T

  6. 【中級】 下面關於文件操作的代碼可能觸發異常()

    file, err := os.Open("test.go")defer file.Close()if err != nil { fmt.Println("open file failed:", err) return}...

    參考答案:T

  7. 【初級】 Golang不支持自動垃圾回收()

    參考答案:F

  8. 【初級】 Golang支持反射,反射最常見的使用場景是做對象的序列化()

    參考答案:T

  9. 【初級】 Golang可以復用C/C++的模塊,這個功能叫Cgo()

    參考答案:F

  10. 【初級】 下面代碼中兩個斜點之間的代碼,比如json:"x",作用是X字段在從結構體實例編碼到JSON數據格式的時候,使用x作為名字,這可以看作是一種重命名的方式()

    type Position struct {X int `json:"x"`Y int `json:"y"`Z int `json:"z"`}

    參考答案:T

  11. 【初級】 通過成員變量或函數首字母的大小寫來決定其作用域()

    參考答案:T

  12. 【初級】 對於常量定義zero(const zero = 0.0),zero是浮點型常量()

    參考答案:F

  13. 【初級】 對變量x的取反操作是~x()

    參考答案:F

  14. 【初級】 下面的程序的運行結果是xello()

    func main() {str := "hello"str[0] = ‘x‘fmt.Println(str)}

    參考答案:F

  15. 【初級】 golang支持goto語句()

    參考答案:T

  16. 【初級】 下面代碼中的指針p為野指針,因為返回的棧內存在函數結束時會被釋放()

    type TimesMatcher struct {base int}func NewTimesMatcher(base int) *TimesMatcher{return &TimesMatcher{base:base}}func main() {p := NewTimesMatcher(3)...}

    參考答案:F

  17. 【初級】 匿名函數可以直接賦值給一個變量或者直接執行()

    參考答案:T

  18. 【初級】 如果調用方調用了一個具有多返回值的方法,但是卻不想關心其中的某個返回值,可以簡單地用一個下劃線“_”來跳過這個返回值,該下劃線對應的變量叫匿名變量()

    參考答案:T

  19. 【初級】 在函數的多返回值中,如果有error或bool類型,則一般放在最後一個()

    參考答案:T

  20. 【初級】 錯誤是業務過程的一部分,而異常不是()

    參考答案:T

  21. 【初級】 函數執行時,如果由於panic導致了異常,則延遲函數不會執行()

    參考答案:F

  22. 【中級】 當程序運行時,如果遇到引用空指針、下標越界或顯式調用panic函數等情況,則先觸發panic函數的執行,然後調用延遲函數。調用者繼續傳遞panic,因此該過程一直在調用棧中重復發生:函數停止執行,調用延遲執行函數。如果一路在延遲函數中沒有recover函數的調用,則會到達該攜程的起點,該攜程結束,然後終止其他所有攜程,其他攜程的終止過程也是重復發生:函數停止執行,調用延遲執行函數()

    參考答案:F

  23. 【初級】 同級文件的包名不允許有多個()

    參考答案:T

  24. 【中級】 可以給任意類型添加相應的方法()

    參考答案:F

  25. 【初級】 golang雖然沒有顯式的提供繼承語法,但是通過匿名組合實現了繼承()

    參考答案:T

  26. 【初級】 使用for range叠代map時每次叠代的順序可能不一樣,因為map的叠代是隨機的()

    參考答案:T

  27. 【初級】 switch後面可以不跟表達式()

    參考答案:T

  28. 【中級】 結構體在序列化時非導出變量(以小寫字母開頭的變量名)不會被encode,因此在decode時這些非導出變量的值為其類型的零值()

    參考答案:T

  29. 【初級】 golang中沒有構造函數的概念,對象的創建通常交由一個全局的創建函數來完成,以NewXXX來命名()

    參考答案:T

  30. 【中級】 當函數deferDemo返回失敗時,並不能destroy已create成功的資源()

    func deferDemo() error {err := createResource1()if err != nil { return ERR_CREATE_RESOURCE1_FAILED}defer func() { if err != nil { destroyResource1() }}()err = createResource2()if err != nil { return ERR_CREATE_RESOURCE2_FAILED}defer func() { if err != nil { destroyResource2() }}()err = createResource3()if err != nil { return ERR_CREATE_RESOURCE3_FAILED}return nil }

    參考答案:F

  31. 【中級】 channel本身必然是同時支持讀寫的,所以不存在單向channel()

    參考答案:F

  32. 【初級】 import後面的最後一個元素是包名()

    參考答案:F返回搜狐,查看更多

聲明:本文由入駐搜狐號的作者撰寫,除搜狐官方賬號外,觀點僅代表作者本人,不代表搜狐立場。 閱讀 (37) 不感興趣 投訴 本文相關推薦
  • golang+int+int64
  • golang+函數指針
  • golang開發工具
  • golang實現mysql
  • golang的優勢
  • golang語言缺點
  • golang社區下載
  • golang集合處理
  • golang結構體初始化
  • golang在哪裏輸入代碼
  • golang項目實戰視頻教程
  • golang面試題

golang精選100題帶答案