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语言 面试技巧
相关推荐
chinawangfei 2020-06-16
kka 2020-06-09
小方哥哥 2020-07-09
msmysql 2020-06-26
free0day 2020-05-25
yunfeitian 2020-05-05
ericasadun 2020-04-19
狼窝 2020-03-20
aweilark 2020-03-06
Winterto0 2020-02-10
twater000 2020-02-01
IsanaYashiro 2020-01-28
林大鹏 2020-01-24
ilovewqf 2020-01-16
Yasin 2019-12-19
狼窝 2019-12-12
fenxinzi 2019-12-06
AKATheIronHead 2010-12-27
jiangxinyu 2011-06-07