2020年Go語言那些不得不看的最新面試題


點擊這里,查看剩余5道2020年最新面試題及其解析

1、編譯執行下面代碼會出現什么?

package main
var( size :=1024 max_size = size*2 ) func main() { println(size,max_size) } 

解析 考點:變量簡短模式 變量簡短模式限制: - 定義變量同時顯式初始化 - 不能提供數據類型 - 只能在函數內部使用

結果:

syntax error: unexpected :=
2、下面函數有什么問題? package main const cl = 100 var bl = 123 func main() { println(&bl,bl) println(&cl,cl) } 

解析 考點:常量 常量不同於變量的在運行期分配內存,常量通常會被編譯器在預處理階段直接展開,作為指令數據使用,

cannot take the address of cl 

3、編譯執行下面代碼會出現什么?

package main

func main()  {

    for i:=0;i<10 ;i++ { loop: println(i) } goto loop } 

解析 考點:goto goto不能跳轉到其他函數或者內層代碼

goto loop jumps into block starting at

4、編譯執行下面代碼會出現什么?

package main
import "fmt" func main() { type MyInt1 int type MyInt2 = int var i int =9 var i1 MyInt1 = i var i2 MyInt2 = i fmt.Println(i1,i2) } 

解析 考點:Go 1.9 新特性 Type Alias 基於一個類型創建一個新類型,稱之為defintion;基於一個類型創建一個別名,稱之為alias。 MyInt1為稱之為defintion,雖然底層類型為int類型,但是不能直接賦值,需要強轉; MyInt2稱之為alias,可以直接賦值。

結果:

cannot use i (type int) as type MyInt1 in assignment 

5、編譯執行下面代碼會出現什么?

package main
import "fmt" type User struct { } type MyUser1 User type MyUser2 = User func (i MyUser1) m1(){ fmt.Println("MyUser1.m1") } func (i User) m2(){ fmt.Println("User.m2") } func main() { var i1 MyUser1 var i2 MyUser2 i1.m1() i2.m2() } 

解析 考點:Go 1.9 新特性 Type Alias 因為MyUser2完全等價於User,所以具有其所有的方法,並且其中一個新增了方法,另外一個也會有。 但是

i1.m2()

是不能執行的,因為MyUser1沒有定義該方法。 結果:

MyUser1.m1
User.m2

關鍵字:Go語言 面試技巧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM