新手问题 2020年Go语言那些不得不看的最新面试题

w1015357065 · 2020年01月06日 · 278 次阅读

点击这里,查看剩余 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 语言  面试  

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册