久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

2022年Go語言的最新面試題有哪些

155次閱讀
沒有評論

共計 3235 個字符,預(yù)計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹了 2022 年 Go 語言的最新面試題有哪些的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 2022 年 Go 語言的最新面試題有哪些文章都會有所收獲,下面我們一起來看看吧。

1、編譯執(zhí)行下面代碼會出現(xiàn)什么?

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

解析 考點: 變量簡短模式 變量簡短模式限制:– 定義變量同時顯式初始化 – 不能提供數(shù)據(jù)類型 – 只能在函數(shù)內(nèi)部使用

結(jié)果:

syntax error: unexpected :=

2、下面函數(shù)有什么問題?

package main
const cl = 100
var bl = 123
func main() { println( bl,bl)
 println(cl,cl)
}

解析 考點: 常量 常量不同于變量的在運行期分配內(nèi)存,常量通常會被編譯器在預(yù)處理階段直接展開,作為指令數(shù)據(jù)使用,

cannot take the address of cl

3、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
func main() {
 for i:=0;i 10 ;i++ {
 loop:
 println(i)
 }
 goto loop
}

解析 考點:goto goto 不能跳轉(zhuǎn)到其他函數(shù)或者內(nèi)層代碼

goto loop jumps into block starting at

4、編譯執(zhí)行下面代碼會出現(xiàn)什么?

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 基于一個類型創(chuàng)建一個新類型,稱之為 defintion;基于一個類型創(chuàng)建一個別名,稱之為 alias。MyInt1 為稱之為 defintion,雖然底層類型為 int 類型,但是不能直接賦值,需要強轉(zhuǎn);MyInt2 稱之為 alias,可以直接賦值。

結(jié)果:

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

5、編譯執(zhí)行下面代碼會出現(xiàn)什么?

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()

是不能執(zhí)行的,因為 MyUser1 沒有定義該方法。結(jié)果:

MyUser1.m1
User.m2

6、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
import  fmt 
type T1 struct {func (t T1) m1(){ fmt.Println( T1.m1)
type T2 = T1
type MyStruct struct {
 T1
 T2
func main() { my:=MyStruct{}
 my.m1()}

** 解析 考點:Go 1.9 新特性 Type Alias ** 是不能正常編譯的, 異常:

ambiguous selector my.m1

結(jié)果不限于方法,字段也也一樣;也不限于 type alias,type defintion 也是一樣的,只要有重復(fù)的方法、字段,就會有這種提示,因為不知道該選擇哪個。改為:

my.T1.m1()
my.T2.m1()

type alias 的定義,本質(zhì)上是一樣的類型,只是起了一個別名,源類型怎么用,別名類型也怎么用,保留源類型的所有方法、字段等。

7、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
import (
  errors 
  fmt 
var ErrDidNotWork = errors.New(did not work)
func DoTheThing(reallyDoIt bool) (err error) {
 if reallyDoIt { result, err := tryTheThing()
 if err != nil || result !=  it worked  {
 err = ErrDidNotWork
 }
 }
 return err
func tryTheThing() (string,error) {
 return  ,ErrDidNotWork
func main() { fmt.Println(DoTheThing(true))
 fmt.Println(DoTheThing(false))
}

解析 考點:變量作用域 因為 if 語句塊內(nèi)的 err 變量會遮罩函數(shù)作用域內(nèi)的 err 變量,結(jié)果:

nil 
 nil

改為:

func DoTheThing(reallyDoIt bool) (err error) {
 var result string
 if reallyDoIt { result, err = tryTheThing()
 if err != nil || result !=  it worked  {
 err = ErrDidNotWork
 }
 }
 return err
}

8、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
func test() []func() { var funs []func()
 for i:=0;i 2 ;i++ { funs = append(funs, func() { println( i,i)
 })
 }
 return funs
func main(){ funs:=test()
 for _,f:=range funs{ f()
 }
}

解析 考點:閉包延遲求值 for 循環(huán)復(fù)用局部變量 i,每一次放入匿名函數(shù)的應(yīng)用都是想一個變量。結(jié)果:

0xc042046000 2
0xc042046000 2

如果想不一樣可以改為:

func test() []func() { var funs []func()
 for i:=0;i 2 ;i++ {
 x:=i
 funs = append(funs, func() { println( x,x)
 })
 }
 return funs
}

9、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
func test(x int) (func(),func()) { return func() { println(x)
 x+=10
 }, func() { println(x)
 }
func main() { a,b:=test(100)
 a()
 b()}

解析 考點:閉包引用相同變量 結(jié)果:

100
110

10、編譯執(zhí)行下面代碼會出現(xiàn)什么?

package main
import (
  fmt 
func main() { defer func() { if err:=recover();err!=nil{ fmt.Println(err)
 }else { fmt.Println( fatal)
 }
 }()
 defer func() { panic( defer panic)
 }()
 panic(panic)
}

關(guān)于“2022 年 Go 語言的最新面試題有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“2022 年 Go 語言的最新面試題有哪些”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計3235字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桂阳县| 镇原县| 九台市| 阳原县| 长治县| 扎鲁特旗| 龙游县| 广汉市| 喀喇沁旗| 日喀则市| 长葛市| 锡林浩特市| 滨海县| 乌什县| 明光市| 通城县| 班戈县| 沈阳市| 章丘市| 重庆市| 玉龙| 阿尔山市| 平陆县| 杭锦旗| 开原市| 体育| 韩城市| 防城港市| 大新县| 沈丘县| 定南县| 廊坊市| 精河县| 会东县| 平顶山市| 班玛县| 清丰县| 武定县| 上饶县| 易门县| 东港市|