1、以下代码打印出来什么内容,说出为什么?(20分)
package main
import (
"fmt"
)
type People interface {
Show ()
}
type Student struct {}
func (stu * Student ) Show () {
}
func live () People {
var stu * Student
return stu
}
func main () {
if live () == nil {
fmt .Println ("AAAAAAA" )
} else {
fmt .Println ("BBBBBBB" )
}
}
2.是否可以编译通过?如果通过,输出什么?(20分)
func main () {
i := GetValue ()
switch i .(type ) {
case int :
println ("int" )
case string :
println ("string" )
case interface {}:
println ("interface" )
default :
println ("unknown" )
}
}
func GetValue () int {
return 1
}
func funcMui (x ,y int )(sum int ,error ){
return x + y ,nil
}
4.是否可以编译通过?如果通过,输出什么?(20分)
package main
func main () {
println (DeferFunc1 (1 ))
println (DeferFunc2 (1 ))
println (DeferFunc3 (1 ))
}
func DeferFunc1 (i int ) (t int ) {
t = i
defer func () {
t += 3
}()
return t
}
func DeferFunc2 (i int ) int {
t := i
defer func () {
t += 3
}()
return t
}
func DeferFunc3 (i int ) (t int ) {
defer func () {
t += i
}()
return 2
}}
5.是否可以编译通过?如果通过,输出什么?(20分)
func main () {
list := new ([]int )
list = append (list , 1 )
fmt .Println (list )
}
6.是否可以编译通过?如果通过,输出什么?(20分)
package main
import "fmt"
func main () {
s1 := []int {1 , 2 , 3 }
s2 := []int {4 , 5 }
s1 = append (s1 , s2 )
fmt .Println (s1 )
}
7.是否可以编译通过?如果通过,输出什么?(20分)
func main () {
sn1 := struct {
age int
name string
}{age : 11 , name : "qq" }
sn2 := struct {
age int
name string
}{age : 11 , name : "qq" }
if sn1 == sn2 {
fmt .Println ("sn1 == sn2" )
}
sm1 := struct {
age int
m map [string ]string
}{age : 11 , m : map [string ]string {"a" : "1" }}
sm2 := struct {
age int
m map [string ]string
}{age : 11 , m : map [string ]string {"a" : "1" }}
if sm1 == sm2 {
fmt .Println ("sm1 == sm2" )
}
}
8.是否可以编译通过?如果通过,输出什么?(20分)
func Foo (x interface {}) {
if x == nil {
fmt .Println ("empty interface" )
return
}
fmt .Println ("non-empty interface" )
}
func main () {
var x * int = nil
Foo (x )
}
9.是否可以编译通过?如果通过,输出什么?(20分)
func GetValue (m map [int ]string , id int ) (string , bool ) {
if _ , exist := m [id ]; exist {
return "存在数据" , true
}
return nil , false
}
func main () {
intmap := map [int ]string {
1 :"a" ,
2 :"bb" ,
3 :"ccc" ,
}
v ,err := GetValue (intmap ,3 )
fmt .Println (v ,err )
}
10.是否可以编译通过?如果通过,输出什么?(20分)
const (
x = iota
y
z = "zz"
k
p = iota
)
func main () {
fmt .Println (x ,y ,z ,k ,p )
}