面试题笔试题学习日记——golang(7.30)

下面赋值正确的是()
A. var x = nil
B. var x interface{} = nil
C. var x string = nil
D. var x error = nil
答案:BD

关于整型切片的初始化,下面正确的是()
A. s := make([]int)
B. s := make([]int, 0)
C. s := make([]int, 5, 10)
D. s := []int{1, 2, 3, 4, 5}
答案:BCD

从切片中删除一个元素,下面的算法实现正确的是()
A.

func (s *Slice) Remove(value interface{}) error {
	for i, v := range *s{
		if isEqual(value, v) {
			if i == len(*s) - 1 {
				*s = (*s)[:i]
			}else {
				*s = append((*s)[:i], (*s)[i + 2:]...)
			}
			return nil
		}
	}
	return ERR_ELEM_NT_EXIST
}

B.

func (s *Slice) Remove(value interface{}) error {
	for i, v := range *s {
		if isEqual(value, v) {
			*s = append((*s)[:i], (*s)[i + 1:])
			return nil
		}
	}
	return ERR_ELEM_NT_EXIST
}

C.

func (s *Slice) Remove(value interface{}) error {
	for i, v range *s {
		if isEqual(value, v) {
			delete(*s, v)
			return nil
		}
	}
	return ERR_ELEM_NT_EXIST
}

D.

func (s *Slice) Remove(value interface{}) error {
	for i, v := range *s {
		if isEqual(value, v) {
			*s = append((*s)[:i], (*s)[i + 1:]...)
			return nil
		}
	}
	return ERR_ELEM_NT_EXIST
}

答案:D

对于局部变量类型切片X的赋值,下面定义正确的是()
A.

x := []int{
	53, 1, 2, 3,
	54, 4, 5, 6,
}

B.

x := []int{
	1, 2, 3,
	4, 5, 6 
}

C.

x := []int{
	1, 2, 3,
	4, 5, 6}

D.

x := []int{1, 2, 3, 4, 5, 6,}

答案:ACD

关于变量的自增和自减操作,下面语句正确的是()
A.

i := 1
i++

B.

i := 1
j = i++

C.

i := 1
++i

D.

i := 1
i--

答案:AD

关于函数声明,下面语法错误的是()
A.

func f(a, b int) (value int, err error)

B.

func f(a int, b int) (value int, err error)

C.

func f(a, b int) (value int, error)

D.

func f(a int, b int) (int, int, error)

答案:C

如果Add函数的调用代码为:

func main() {
	var a Integer = 1
	var v Integer = 2
	var i interface{} = &a
	sum := i.(*Integer).Add(b)
	fmt.Println(sum)
}

则Add函数定义正确的是()
A.

type Integer int
func (a Integer) Add(b Integer) Integer {
	return a+b
}

B.

type integer int
func (a Integer) Add(b *Integer) Integer {
	return a+*b
}

C.

type Integer int
func (a *Integer) Add(b Integer) Integer {
	return *a+b
}

D.

type Integer int
func (a *Integer) Add(b *Integer) Integer {
	return *a + *b
}

答案:AC

如果Add函数的调用代码为:

func main() {
	var a Integer = 1
	var b Integer = 2
	var i interface{} = a
	sum := i.(Integer).Add(b)
	fmt.Println(sum)
}

则Add函数定义正确的是()
A.

type Integer int
func (a Integer) Add(b Integer) Integer {
	return a+b
}

B.

type Integer int
func (a Integer) Add(b Integer) Integer {
	return a+*b
}

C.

type Integer int
func (a *Integer) Add(b *Integer) Integer {
	return *a+b
}

D.

type Integer int
func (a *Integer) Add(b *Integer) Integer {
	return *a+*b
}

参考答案:A

关于GetPodAction定义

type Fragment interface {
	Exec(transInfo *TransInfo) error
}
type GetPodAction struct {
}
func (g GetPodAction) Exec(transInfo *TransInfo) error {
	...
	return nil
}

下面赋值正确的是()
A. var fragment Fragment = new(GetPodAction)
B. var fragment Fragment = GetPodAction
C. var fragment Fragment = &GetPodAction{}
D. var fragment Fragment - GetPodAction{}
答案:ACD

猜你喜欢

转载自blog.csdn.net/qq_37109456/article/details/107702473