10道Golang测试题,看看你能答对几道?|Go主题月

1,213 阅读2分钟

答案见文末

第一题

func testFunc(arr [3]int, slice []int) {
	arr[0] = arr[0] * 100
	slice[0] = slice[0] * 100
}

func main() {
	myArr := [3]int{1, 3, 5}
	mySlice := []int{1, 3, 5}
	testFunc(myArr, mySlice)
	fmt.Println(myArr[0] == mySlice[0])
}

选择题,上面代码输出什么?

  • A

    true

  • B

    false

第二题

func main() {
	a := []int{1, 3, 5, 7, 9}
	b := make([]int, 0, len(a))
	copy(b, a)
	fmt.Println(len(b))
}

上面代码输出什么?

  • A

    5

  • B

    1

  • C

    0

  • D

    2

第三题

func main() {
	a := make([]byte, 0, 1)
	a1 := append(a, 'a')
	a2 := append(a, 'b')
	fmt.Println(string(a1) == string(a2))
}

选择题,上面代码输出什么?

  • A

    true

  • B

    false

第四题

func main() {
    var a uint = 1
    var b uint = 2
    fmt.Println(a - b)
}

选择题,上面代码输出什么?

  • A

    -1

  • B

    1

  • C

    0

  • D

    uint类型最大值

第五题

func main() {
	fmt.Println(0.1+0.2 == 0.3)
	a := 0.1
	b := 0.2
	fmt.Println(a+b == 0.3)
}

选择题,上面代码输出什么?

  • A

    true false

  • B

    true true

  • C

    false false

  • D

    false true

第六题

func funcA(n int) func() {
	n++
	return func() {
		fmt.Println(n)
	}
}

func funcB(n int) func() {
	return func() {
		n++
		fmt.Println(n)
	}
}

func main() {
	f1 := funcA(10)
	f1()
	f1()

	f2 := funcB(10)
	f2()
	f2()
}

选择题,上面代码输出什么?

  • A

    11 11 11 11

  • B

    11 12 11 12

  • C

    11 11 11 12

  • D

    11 12 11 11

第七题

func func1() (i int) {
	defer func() {
		i++
	}()

	return i
}

func func2() int {
	var i int
	defer func() {
		i++
	}()

	return i
}

func main() {
	fmt.Println(func1(), func2())
}

选择题,上面代码输出什么?

  • A

    1 0

  • B

    1 1

  • C

    0 0

  • D

    0 1

第八题

func main() {
	t := struct {
		time.Time
		N int
	}{
		time.Date(2021, 3, 30, 0, 0, 0, 0, time.UTC),
		5,
	}

	m, _ := json.Marshal(t)
	fmt.Printf("%s", m)
}

选择题,上面代码输出什么内容?

  • A

    {"Time": "2021-03-30T00:00:00Z", "N": 5}

  • B

    "2021-03-30T00:00:00Z"

  • C

    {"N": 5}

  • D

    <nil>

第九题

func main() {
	a1 := []int{10}
	a2 := a1[1:]
	fmt.Println(a2)
}

选择题,上面代码输出什么内容?

  • A

    编译失败

  • B

    panic: runtime error: index out of range [1] with length 1

  • C

    []

  • D

    其他

第10题

type TypeA struct {
	_   struct{}
	Num int
}

type TypeB struct {
	Num int

	_ struct{}
}

func main() {
	a := TypeA{Num: 100}
	b := TypeB{Num: 100}
	fmt.Println(unsafe.Sizeof(a), unsafe.Sizeof(b))
}

选择题,上面代码输出什么内容(运行在64位系统上)?

  • A

    8 8

  • B

    16 16

  • C

    16 8

  • D

    8 16

答案:

第一题:B

第二题:C

第三题:A

第四题:D

第五题:A

第六题:C

第七题:A

第八题:B

第九题:C

第十题:D