Golang精編100題

選擇題

[primary] 下面屬于關(guān)鍵字的是()

A. func

B. def

C. struct

D. class

參考答案:AC

[primary] 定義一個(gè)包內(nèi)全局字符串變量,下面語法正確的是 ()

A. var str string

B. str := ""

C. str = ""

D. var str = ""

參考答案:AD

[primary] 通過指針變量 p 訪問其成員變量 name,下面語法正確的是()

A. p.name

B. (*p).name

C. (&p).name

D. p->name

參考答案:AB

[primary] 關(guān)于接口和類的說法并村,下面說法正確的是()

A. 一個(gè)類只需要實(shí)現(xiàn)了接口要求的所有函數(shù)屿愚,我們就說這個(gè)類實(shí)現(xiàn)了該接口

B. 實(shí)現(xiàn)類的時(shí)候携茂,只需要關(guān)心自己應(yīng)該提供哪些方法澜搅,不用再糾結(jié)接口需要拆得多細(xì)才合理

C. 類實(shí)現(xiàn)接口時(shí)敞掘,需要導(dǎo)入接口所在的包

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

參考答案:ABD

[primary] 關(guān)于字符串連接汁政,下面語法正確的是()

A. str := ‘a(chǎn)bc’ + ‘123’

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

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

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

參考答案:BD

[primary] 關(guān)于協(xié)程,下面說法正確是()

A. 協(xié)程和線程都可以實(shí)現(xiàn)程序的并發(fā)執(zhí)行

B. 線程比協(xié)程更輕量級

C. 協(xié)程不存在死鎖問題

D. 通過channel來進(jìn)行協(xié)程間的通信

參考答案:AD

[intermediate] 關(guān)于init函數(shù)缀旁,下面說法正確的是()

A. 一個(gè)包中记劈,可以包含多個(gè)init函數(shù)

B. 程序編譯時(shí),先執(zhí)行導(dǎo)入包的init函數(shù)并巍,再執(zhí)行本包內(nèi)的init函數(shù)

C. main包中目木,不能有init函數(shù)

D. init函數(shù)可以被其他函數(shù)調(diào)用

參考答案:AB

[primary] 關(guān)于循環(huán)語句,下面說法正確的有()

A. 循環(huán)語句既支持for關(guān)鍵字履澳,也支持while和do-while

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

C. for循環(huán)支持continue和break來控制循環(huán)嘶窄,但是它提供了一個(gè)更高級的break,可以選擇中斷哪一個(gè)循環(huán)

D. for循環(huán)不支持以逗號為間隔的多個(gè)賦值語句距贷,必須使用平行賦值的方式來初始化多

個(gè)變量

參考答案:CD

[intermediate] 對于函數(shù)定義:

func add(args ...int) int {

? ? sum := 0

? ? for _, arg := range args {

? ? ? ? sum += arg

? ? }

? ? return sum

}

下面對add函數(shù)調(diào)用正確的是()

A. add(1, 2)

B. add(1, 3, 7)

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

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

參考答案:ABD

[primary] 關(guān)于類型轉(zhuǎn)化柄冲,下面語法正確的是()

A.

type MyInt int

var i int = 1

var j MyInt = i

B.

type MyInt int

var i int = 1

var j MyInt = (MyInt)i

C.

type MyInt int

var i int = 1

var j MyInt = MyInt(i)

D.

type MyInt int

var i int = 1

var j MyInt = i.(MyInt)

參考答案:C

[primary] 關(guān)于局部變量的初始化,下面正確的使用方式是()

A. var i int = 10

B. var i = 10

C. i := 10

D. i = 10

參考答案:ABC

[primary] 關(guān)于const常量定義忠蝗,下面正確的使用方式是()

A.

const Pi float64 = 3.14159265358979323846

const zero = 0.0

B.

const (

? ? size int64 = 1024

? ? eof = -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

[primary] 關(guān)于布爾變量b的賦值现横,下面錯(cuò)誤的用法是()

A. b = true

B. b = 1

C. b = bool(1)

D. b = (1 == 2)

參考答案:BC

[intermediate] 下面的程序的運(yùn)行結(jié)果是()

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

[primary] 關(guān)于switch語句,下面說法正確的有()

A. 條件表達(dá)式必須為常量或者整數(shù)

B. 單個(gè)case中阁最,可以出現(xiàn)多個(gè)結(jié)果選項(xiàng)

C. 需要用break來明確退出一個(gè)case

D. 只有在case中明確添加fallthrough關(guān)鍵字戒祠,才會繼續(xù)執(zhí)行緊跟的下一個(gè)case

參考答案:BD

[intermediate] golang中沒有隱藏的this指針,這句話的含義是()

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

B. golang沿襲了傳統(tǒng)面向?qū)ο缶幊讨械闹T多概念姜盈,比如繼承、虛函數(shù)和構(gòu)造函數(shù)

C. golang的面向?qū)ο蟊磉_(dá)更直觀配阵,對于面向過程只是換了一種語法形式來表達(dá)

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

參考答案:ACD

[intermediate] golang中的引用類型包括()

A. 數(shù)組切片

B. map

C. channel

D. interface

參考答案:ABCD

[intermediate] golang中的指針運(yùn)算包括()

A. 可以對指針進(jìn)行自增或自減運(yùn)算

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

C. 可以通過“*”取指針指向的數(shù)據(jù)

D. 可以對指針進(jìn)行下標(biāo)運(yùn)算

參考答案:BC

[primary] 關(guān)于main函數(shù)(可執(zhí)行程序的執(zhí)行起點(diǎn))示血,下面說法正確的是()

A. main函數(shù)不能帶參數(shù)

B. main函數(shù)不能定義返回值

C. main函數(shù)所在的包必須為main包

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

參考答案:ABCD

[intermediate] 下面賦值正確的是()

A. var x = nil

B. var x interface{} = nil

C. var x string = nil

D. var x error = nil

參考答案:BD

[intermediate] 關(guān)于整型切片的初始化,下面正確的是()

A. s := make([]int)

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

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

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

參考答案:BCD

[intermediate] 從切片中刪除一個(gè)元素救拉,下面的算法實(shí)現(xiàn)正確的是()

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

[primary] 對于局部變量整型切片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

[primary] 關(guān)于變量的自增和自減操作,下面語句正確的是()

A.

i := 1

i++

B.

i := 1

j = i++

C.

i := 1

++i

D.

i := 1

i--

參考答案:AD

[intermediate] 關(guān)于函數(shù)聲明亿絮,下面語法錯(cuò)誤的是()

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

[intermediate] 如果Add函數(shù)的調(diào)用代碼為:

func main() {

? ? var a Integer = 1

? ? var b Integer = 2

? ? var i interface{} = &a

? ? sum := i.(*Integer).Add(b)

? ? fmt.Println(sum)

}

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

A.

type Integer int

func (a Integer) Add(b Integer) Integer {

? ? return a + b

}

B.

type Integer int

func (a Integer) Add(b *Integer) Integer {

? ? return a + *b

}

C.

type Integer int

func (a *Integer) Add(b Integer) Integer {

? ? return *a + b

}

D.

type Integer int

func (a *Integer) Add(b *Integer) Integer {

? ? return *a + *b

}

參考答案:AC

[intermediate] 如果Add函數(shù)的調(diào)用代碼為:

func main() {

? ? var a Integer = 1

? ? var b Integer = 2

? ? var i interface{} = a

? ? sum := i.(Integer).Add(b)

? ? fmt.Println(sum)

}

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

A.

type Integer int

func (a Integer) Add(b Integer) Integer {

? ? return a + b

}

B.

type Integer int

func (a Integer) Add(b *Integer) Integer {

? ? return a + *b

}

C.

type Integer int

func (a *Integer) Add(b Integer) Integer {

? ? return *a + b

}

D.

type Integer int

func (a *Integer) Add(b *Integer) Integer {

? ? return *a + *b

}

參考答案:A

[intermediate] 關(guān)于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

[intermediate] 關(guān)于GoMock,下面說法正確的是()

A. GoMock可以對interface打樁

B. GoMock可以對類的成員函數(shù)打樁

C. GoMock可以對函數(shù)打樁

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

參考答案:AD

[intermediate] 關(guān)于接口派昧,下面說法正確的是()

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

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

C. 接口查詢是否成功地淀,要在運(yùn)行期才能夠確定

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

參考答案:ABC

[primary] 關(guān)于channel岖是,下面語法正確的是()

A. var ch chan int

B. ch := make(chan int)

C. <- ch

D. ch <-

參考答案:ABC

[primary] 關(guān)于同步鎖,下面說法正確的是()

A. 當(dāng)一個(gè)goroutine獲得了Mutex后实苞,其他goroutine就只能乖乖的等待豺撑,除非該goroutine釋放這個(gè)Mutex

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

C. RWMutex在寫鎖占用情況下聪轿,會阻止任何其他goroutine(無論讀和寫)進(jìn)來,整個(gè)鎖相當(dāng)于由該goroutine獨(dú)占

D. Lock()操作需要保證有Unlock()或RUnlock()調(diào)用與之對應(yīng)

參考答案:ABC

[intermediate] golang中大多數(shù)數(shù)據(jù)類型都可以轉(zhuǎn)化為有效的JSON文本猾浦,下面幾種類型除外()

A. 指針

B. channel

C. complex

D. 函數(shù)

參考答案:BCD

[intermediate] 關(guān)于go vendor陆错,下面說法正確的是()

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

B. 編譯go代碼會優(yōu)先從vendor目錄先尋找依賴包

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

D. 有了vendor目錄后,打包當(dāng)前的工程代碼到其他機(jī)器的$GOPATH/src下都可以通過編譯

參考答案:ABD

[primary] flag是bool型變量金赦,下面if表達(dá)式符合編碼規(guī)范的是()

A. if flag == 1

B. if flag

C. if flag == false

D. if !flag

參考答案:BD

[primary] value是整型變量音瓷,下面if表達(dá)式符合編碼規(guī)范的是()

A. if value == 0

B. if value

C. if value != 0

D. if !value

參考答案:AC

[intermediate] 關(guān)于函數(shù)返回值的錯(cuò)誤設(shè)計(jì),下面說法正確的是()

A. 如果失敗原因只有一個(gè)夹抗,則返回bool

B. 如果失敗原因超過一個(gè)绳慎,則返回error

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

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

參考答案:ABCD

[intermediate] 關(guān)于異常設(shè)計(jì)杏愤,下面說法正確的是()

A. 在程序開發(fā)階段,堅(jiān)持速錯(cuò)已脓,讓程序異常崩潰

B. 在程序部署后珊楼,應(yīng)恢復(fù)異常避免程序終止

C. 一切皆錯(cuò)誤,不用進(jìn)行異常設(shè)計(jì)

D. 對于不應(yīng)該出現(xiàn)的分支度液,使用異常處理

參考答案:ABD

[intermediate] 關(guān)于slice或map操作厕宗,下面正確的是()

A.

var s []int

s = append(s,1)

B.

var m map[string]int

m["one"] = 1

C.

var s []int

s = make([]int, 0)

s = append(s,1)

D.

var m map[string]int

m = make(map[string]int)

m["one"] = 1

參考答案:ACD

[intermediate] 關(guān)于channel的特性画舌,下面說法正確的是()

A. 給一個(gè) nil channel 發(fā)送數(shù)據(jù),造成永遠(yuǎn)阻塞

B. 從一個(gè) nil channel 接收數(shù)據(jù)媳瞪,造成永遠(yuǎn)阻塞

C. 給一個(gè)已經(jīng)關(guān)閉的 channel 發(fā)送數(shù)據(jù)骗炉,引起 panic

D. 從一個(gè)已經(jīng)關(guān)閉的 channel 接收數(shù)據(jù),如果緩沖區(qū)中為空蛇受,則返回一個(gè)零值

參考答案:ABCD

[intermediate] 關(guān)于無緩沖和有沖突的channel句葵,下面說法正確的是()

A. 無緩沖的channel是默認(rèn)的緩沖為1的channel

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

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

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

參考答案:D

[intermediate] 關(guān)于異常的觸發(fā)兢仰,下面說法正確的是()

A. 空指針解析

B. 下標(biāo)越界

C. 除數(shù)為0

D. 調(diào)用panic函數(shù)

參考答案:ABCD

[intermediate] 關(guān)于cap函數(shù)的適用類型乍丈,下面說法正確的是()

A. array

B. slice

C. map

D. channel

參考答案:ABD

[intermediate] 關(guān)于beego框架,下面說法正確的是()

A. beego是一個(gè)golang實(shí)現(xiàn)的輕量級HTTP框架

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

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

D. beego框架只提供了對url路由的處理, 而對于MVC架構(gòu)中的數(shù)據(jù)庫部分未提供框架支持

參考答案:ABC

[intermediate] 關(guān)于goconvey察蹲,下面說法正確的是()

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

B. goconvey能夠自動監(jiān)控文件修改并啟動測試请垛,并可以將測試結(jié)果實(shí)時(shí)輸出到web界面

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

D. goconvey無法與go test集成

參考答案:ABC

[intermediate] 關(guān)于go vet,下面說法正確的是()

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

B. 當(dāng)執(zhí)行g(shù)o vet database時(shí)洽议,可以對database所在目錄下的所有子文件夾進(jìn)行遞歸檢測

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

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

參考答案:ACD

[intermediate] 關(guān)于map,下面說法正確的是()

A. map反序列化時(shí)json.unmarshal的入?yún)⒈仨殲閙ap的地址

B. 在函數(shù)調(diào)用中傳遞map亚兄,則子函數(shù)中對map元素的增加不會導(dǎo)致父函數(shù)中map的修改

C. 在函數(shù)調(diào)用中傳遞map混稽,則子函數(shù)中對map元素的修改不會導(dǎo)致父函數(shù)中map的修改

D. 不能使用內(nèi)置函數(shù)delete刪除map的元素

參考答案:A

[intermediate] 關(guān)于GoStub,下面說法正確的是()

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

B. GoStub可以對函數(shù)打樁

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

D. GoStub可以打動態(tài)樁审胚,比如對一個(gè)函數(shù)打樁后匈勋,多次調(diào)用該函數(shù)會有不同的行為

參考答案:ABD

[primary] 關(guān)于select機(jī)制,下面說法正確的是()

A. select機(jī)制用來處理異步IO問題

B. select機(jī)制最大的一條限制就是每個(gè)case語句里必須是一個(gè)IO操作

C. golang在語言級別支持select關(guān)鍵字

D. select關(guān)鍵字的用法與switch語句非常類似膳叨,后面要帶判斷條件

參考答案:ABC

[primary] 關(guān)于內(nèi)存泄露洽洁,下面說法正確的是()

A. golang有自動垃圾回收,不存在內(nèi)存泄露

B. golang中檢測內(nèi)存泄露主要依靠的是pprof包

C. 內(nèi)存泄露可以在編譯階段發(fā)現(xiàn)

D. 應(yīng)定期使用瀏覽器來查看系統(tǒng)的實(shí)時(shí)內(nèi)存信息懒鉴,及時(shí)發(fā)現(xiàn)內(nèi)存泄露問題

參考答案:BD

填空題

[primary] 聲明一個(gè)整型變量i__________

參考答案:var i int

[primary] 聲明一個(gè)含有10個(gè)元素的整型數(shù)組a__________

參考答案:var a [10]int

[primary] 聲明一個(gè)整型數(shù)組切片s__________

參考答案:var s []int

[primary] 聲明一個(gè)整型指針變量p__________

參考答案:var p *int

[primary] 聲明一個(gè)key為字符串型value為整型的map變量m__________

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

[primary] 聲明一個(gè)入?yún)⒑头祷刂稻鶠檎偷暮瘮?shù)變量f__________

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

[primary] 聲明一個(gè)只用于讀取int數(shù)據(jù)的單向channel變量ch__________

參考答案:var ch <-chan int

[primary] 假設(shè)源文件的命名為slice.go诡挂,則測試文件的命名為__________

參考答案:slice_test.go

[primary] go test要求測試函數(shù)的前綴必須命名為__________

參考答案:Test

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

for i := 0; i < 5; i++ {

? ? defer fmt.Printf("%d ", i)

}

參考答案:4 3 2 1 0

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

func main() {

? ? x := 1

? ? {

? ? ? ? x := 2

? ? ? ? fmt.Print(x)

? ? }

? ? fmt.Println(x)

}

參考答案:21

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

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

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

func main() {?

? ? x := []string{"a", "b", "c"}

? ? for v := range x {

? ? ? ? fmt.Print(v)

? ? }

}

參考答案:012

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

func main() {?

? ? x := []string{"a", "b", "c"}

? ? for _, v := range x {

? ? ? ? fmt.Print(v)

? ? }

}

參考答案:abc

[primary] 下面的程序的運(yùn)行結(jié)果是__________

func main() {?

? ? i := 1

? ? j := 2

? ? i, j = j, i

? ? fmt.Printf("%d%d\n", i, j)

}

參考答案:21

[primary] 下面的程序的運(yùn)行結(jié)果是__________

func incr(p *int) int {

? ? *p++?

? ? return *p

}

func main() {?

? ? v := 1

? ? incr(&v)

? ? fmt.Println(v)

}

參考答案:2

[primary] 啟動一個(gè)goroutine的關(guān)鍵字是__________

參考答案:go

[intermediate] 下面的程序的運(yùn)行結(jié)果是__________

type Slice []int

func 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

判斷題

[primary] 數(shù)組是一個(gè)值類型()

參考答案:T

[primary] 使用map不需要引入任何庫()

參考答案:T

[intermediate] 內(nèi)置函數(shù)delete可以刪除數(shù)組切片內(nèi)的元素()

參考答案:F

[primary] 指針是基礎(chǔ)類型()

參考答案:F

[primary] interface{}是可以指向任意對象的Any類型()

參考答案:T

[intermediate] 下面關(guān)于文件操作的代碼可能觸發(fā)異常()

file, err := os.Open("test.go")

defer file.Close()

if err != nil {

? ? fmt.Println("open file failed:", err)

? ? return

}

...

參考答案:T

[primary] Golang不支持自動垃圾回收()

參考答案:F

[primary] Golang支持反射,反射最常見的使用場景是做對象的序列化()

參考答案:T

[primary] Golang可以復(fù)用C/C++的模塊临谱,這個(gè)功能叫Cgo()

參考答案:F

[primary] 下面代碼中兩個(gè)斜點(diǎn)之間的代碼璃俗,比如json:"x",作用是X字段在從結(jié)構(gòu)體實(shí)例編碼到JSON數(shù)據(jù)格式的時(shí)候悉默,使用x作為名字城豁,這可以看作是一種重命名的方式()

type Position struct {

? ? X int `json:"x"`

? ? Y int `json:"y"`

? ? Z int `json:"z"`

}

參考答案:T

[primary] 通過成員變量或函數(shù)首字母的大小寫來決定其作用域()

參考答案:T

[primary] 對于常量定義zero(const zero = 0.0),zero是浮點(diǎn)型常量()

參考答案:F

[primary] 對變量x的取反操作是~x()

參考答案:F

[primary] 下面的程序的運(yùn)行結(jié)果是xello()

func main() {

? ? str := "hello"

? ? str[0] = 'x'

? ? fmt.Println(str)

}

參考答案:F

[primary] golang支持goto語句()

參考答案:T

[primary] 下面代碼中的指針p為野指針抄课,因?yàn)榉祷氐臈?nèi)存在函數(shù)結(jié)束時(shí)會被釋放()

type TimesMatcher struct {

? ? base int

}

func NewTimesMatcher(base int) *TimesMatcher{

? ? return &TimesMatcher{base:base}

}

func main() {

? ? p := NewTimesMatcher(3)

? ? ...

}

參考答案:F

[primary] 匿名函數(shù)可以直接賦值給一個(gè)變量或者直接執(zhí)行()

參考答案:T

[primary] 如果調(diào)用方調(diào)用了一個(gè)具有多返回值的方法唱星,但是卻不想關(guān)心其中的某個(gè)返回值雳旅,可以簡單地用一個(gè)下劃線“_”來跳過這個(gè)返回值,該下劃線對應(yīng)的變量叫匿名變量()

參考答案:T

[primary] 在函數(shù)的多返回值中间聊,如果有error或bool類型攒盈,則一般放在最后一個(gè)()

參考答案:T

[primary] 錯(cuò)誤是業(yè)務(wù)過程的一部分,而異常不是()

參考答案:T

[primary] 函數(shù)執(zhí)行時(shí)哎榴,如果由于panic導(dǎo)致了異常型豁,則延遲函數(shù)不會執(zhí)行()

參考答案:F? ?

[intermediate] 當(dāng)程序運(yùn)行時(shí),如果遇到引用空指針尚蝌、下標(biāo)越界或顯式調(diào)用panic函數(shù)等情況迎变,則先觸發(fā)panic函數(shù)的執(zhí)行,然后調(diào)用延遲函數(shù)飘言。調(diào)用者繼續(xù)傳遞panic衣形,因此該過程一直在調(diào)用棧中重復(fù)發(fā)生:函數(shù)停止執(zhí)行,調(diào)用延遲執(zhí)行函數(shù)姿鸿。如果一路在延遲函數(shù)中沒有recover函數(shù)的調(diào)用谆吴,則會到達(dá)該攜程的起點(diǎn),該攜程結(jié)束苛预,然后終止其他所有攜程纪铺,其他攜程的終止過程也是重復(fù)發(fā)生:函數(shù)停止執(zhí)行,調(diào)用延遲執(zhí)行函數(shù)()

參考答案:F? ?

[primary] 同級文件的包名不允許有多個(gè)()

參考答案:T? ?

[intermediate] 可以給任意類型添加相應(yīng)的方法()

參考答案:F

[primary] golang雖然沒有顯式的提供繼承語法碟渺,但是通過匿名組合實(shí)現(xiàn)了繼承()

參考答案:T

[primary] 使用for range迭代map時(shí)每次迭代的順序可能不一樣,因?yàn)閙ap的迭代是隨機(jī)的()

參考答案:T

[primary] switch后面可以不跟表達(dá)式()

參考答案:T

[intermediate] 結(jié)構(gòu)體在序列化時(shí)非導(dǎo)出變量(以小寫字母開頭的變量名)不會被encode突诬,因此在decode時(shí)這些非導(dǎo)出變量的值為其類型的零值()

參考答案:T

[primary] golang中沒有構(gòu)造函數(shù)的概念苫拍,對象的創(chuàng)建通常交由一個(gè)全局的創(chuàng)建函數(shù)來完成,以NewXXX來命名()

參考答案:T

[intermediate] 當(dāng)函數(shù)deferDemo返回失敗時(shí)旺隙,并不能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

[intermediate] channel本身必然是同時(shí)支持讀寫的绒极,所以不存在單向channel()

參考答案:F

[primary] import后面的最后一個(gè)元素是包名()

參考答案:F

作者:_張曉龍_

鏈接:http://www.reibang.com/p/f690203ff168

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)蔬捷,非商業(yè)轉(zhuǎn)載請注明出處垄提。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市周拐,隨后出現(xiàn)的幾起案子铡俐,更是在濱河造成了極大的恐慌,老刑警劉巖妥粟,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件审丘,死亡現(xiàn)場離奇詭異,居然都是意外死亡勾给,警方通過查閱死者的電腦和手機(jī)滩报,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門锅知,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脓钾,你說我怎么就攤上這事售睹。” “怎么了可训?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵昌妹,是天一觀的道長。 經(jīng)常有香客問我沉噩,道長捺宗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任川蒙,我火速辦了婚禮蚜厉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畜眨。我一直安慰自己昼牛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布康聂。 她就那樣靜靜地躺著贰健,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恬汁。 梳的紋絲不亂的頭發(fā)上伶椿,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音氓侧,去河邊找鬼脊另。 笑死,一個(gè)胖子當(dāng)著我的面吹牛约巷,可吹牛的內(nèi)容都是我干的偎痛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼独郎,長吁一口氣:“原來是場噩夢啊……” “哼踩麦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起氓癌,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谓谦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贪婉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茁计,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了星压。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践剂。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖娜膘,靈堂內(nèi)的尸體忽然破棺而出逊脯,到底是詐尸還是另有隱情,我是刑警寧澤竣贪,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布军洼,位于F島的核電站,受9級特大地震影響演怎,放射性物質(zhì)發(fā)生泄漏匕争。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一爷耀、第九天 我趴在偏房一處隱蔽的房頂上張望甘桑。 院中可真熱鬧,春花似錦歹叮、人聲如沸跑杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽德谅。三九已至,卻和暖如春萨螺,著一層夾襖步出監(jiān)牢的瞬間窄做,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工慰技, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浸策,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓惹盼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惫确。 傳聞我的和親對象是個(gè)殘疾皇子手报,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 能力模型 選擇題 [primary] 下面屬于關(guān)鍵字的是()A. funcB. defC. structD. cl...
    _張曉龍_閱讀 24,837評論 14 224
  • 1. 關(guān)于診斷X線機(jī)準(zhǔn)直器的作用,錯(cuò)誤的是()改化。 (6.0 分) A. 顯示照射野 B. 顯示中心線 C. 屏蔽多...
    我們村我最帥閱讀 10,425評論 0 5
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,798評論 0 38
  • 一 目前有兩件事值得我去做——愛與感恩掩蛤。 也許我剛臨于世時(shí),我的心是暗淡無色的陈肛。但飲了這十八年世間的水...
    不久不留閱讀 419評論 2 0
  • 以米燕的生活軌跡為主線揍鸟,寫在大山里長大的60后、70后女孩的命運(yùn)句旱。 有了米會計(jì)這句話阳藻,米燕娘滿心歡喜晰奖。她巴巴地等到...
    沐兒閱讀 1,906評論 47 44