Golang面試題解析(二)

2021-09-20 22:05:43 字數 2211 閱讀 3031

func main() :

println("inte***ce")

default:

println("unknown") }}

func getvalue() int

考點:type

編譯失敗,因為type只能使用在inte***ce

func funcmui(x,y int)(sum int,error)
考點:函式返回值命名在函式有多個返回值時,只要有乙個返回值有指定命名,其他的也必須有命名。 如果返回值有有多個返回值必須加上括號; 如果只有乙個返回值並且有命名也需要加上括號; 此處函式第乙個返回值有sum名稱,第二個為命名,所以錯誤。

package main

func main() 

func deferfunc1(i int) (t int) ()

return t

}func deferfunc2(i int) int ()

return t

}func deferfunc3(i int) (t int) ()

return 2

}

考點:defer和函式返回值需要明確一點是defer需要在函式結束前執行。 函式返回值名字會在函式起始處被初始化為對應型別的零值並且作用域為整個函式 deferfunc1有函式返回值t作用域為整個函式,在return之前defer會被執行,所以t會被修改,返回4; deferfunc2函式中t的作用域為函式,返回1; deferfunc3返回3

func main()
考點:newlist:=make(int,0)

package main

import "fmt"

func main() 

s2 := int

fmt.println(s1)

}

func main() 

sn2 := struct 

if sn1 == sn2 

sm1 := struct }

sm2 := struct }

if sm1 == sm2 

}

考點:結構體比較進行結構體比較時候,只有相同型別的結構體才可以比較,結構體是否相同不但與屬性型別個數有關,還與屬性順序相關。

sn3:= struct
sn3與sn1就不是相同的結構體了,不能比較。 還有一點需要注意的是結構體是相同的,但是結構體屬性中有不可以比較的型別,如map,slice。 如果該結構屬性都是可以比較的,那麼就可以使用「==」進行比較操作。

可以使用reflect.deepequal進行比較

if reflect.deepequal(sn1, sm) else
所以編譯不通過: invalid operation: sm1 == sm2

func foo(x inte***ce{}) 

fmt.println("non-empty inte***ce")

}func main()

考點:inte***ce內部結構

non-empty inte***ce
func getvalue(m map[int]string, id int) (string, bool) 

return nil, false

}func main()  

v,err:=getvalue(intmap,3)

fmt.println(v,err)

}

考點:函式返回值型別nil 可以用作 inte***ce、function、pointer、map、slice 和 channel 的「空值」。但是如果不特別指定的話,go 語言不能識別型別,所以會報錯。通常編譯的時候不會報錯,但是執行是時候會報:cannot use nil as type string in return argument.

const (

x = iota

y z = "zz"

k p = iota

)func main()

考點:iota

結果:

0 1 zz zz 4

面試題解析

1.繼承執行順序 當兩個類之間有繼承關係時,第一次構造子類的例項時,是按照如下順序進行的 1.子類的靜態成員初始化語句 2.子類的靜態建構函式 3.子類的非靜態成員初始化語句 4.父類的靜態成員初始化語句 5.父類的靜態建構函式 6.父類的非靜態成員初始化語句 7.父類的建構函式 8.子類的建構函式...

面試題解析記載

工具類原始碼 hashcode 在建立類的時候要覆蓋equal 和 hash 方法 arraylist 基礎陣列來實現的,遍歷查詢快,但是刪除需要移動陣列資料,處理會慢。linkedlist 實現原理通過鍊錶實現,插入快,查詢和刪除慢。hashmap 非執行緒安全的,通過鍊錶實現的,查詢速度回快很多...

華為面試題解析 06

06.計算下列程式的輸出 cpp exercise05.c created on 2012 11 5 author xiaobin int main int argc,char ar int p,q p a q a 2 printf d n a q p return 0 首先,我們要知道陣列a的數值...