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

有隻黑白貓發表於2020-01-06

點選這裡,檢視剩餘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語言  面試  

相關文章