2023-05-26:golang关于垃圾回收和析构的选择题,代码如下: ```go package main import

2023-08-29 10:25:38 浏览数 (1)

2023-05-26:golang关于垃圾回收和析构的选择题,代码如下:

代码语言:javascript复制
package main

import (
    "fmt"
    "runtime"
    "time"
)

type ListNode struct {
    Val  int
    Next *ListNode
}

func main0() {
    a := &ListNode{Val: 1}
    b := &ListNode{Val: 2}
    runtime.SetFinalizer(a, func(obj *ListNode) {
        fmt.Printf("a被回收--")
    })
    runtime.SetFinalizer(b, func(obj *ListNode) {
        fmt.Printf("b被回收--")
    })
    a.Next = b
    b.Next = a
}

func main() {
    main0()
    time.Sleep(1 * time.Second)
    runtime.GC()
    time.Sleep(1 * time.Second)
    runtime.GC()
    time.Sleep(1 * time.Second)
    runtime.GC()
    time.Sleep(1 * time.Second)
    runtime.GC()
    time.Sleep(1 * time.Second)
    runtime.GC()
    fmt.Print("结束")
}

代码的运行结果是什么?并说明原因。注意析构是无序的。

A. 结束

B. a被回收--b被回收--结束

C. b被回收--a被回收--结束

D.B和C都有可能

明天给出答案和解析。这道题来自qq群。

以下是凑字数的,不要看。

给定一个正整数 x,我们将会写出一个形如 x (op1) x (op2) x (op3) x ... 的表达式

其中每个运算符 op1,op2,… 可以是加、减、乘、除之一

例如,对于 x = 3,我们可以写出表达式 3 * 3 / 3 3 - 3,该式的值为3

在写这样的表达式时,我们需要遵守下面的惯例:

除运算符(/)返回有理数

任何地方都没有括号

我们使用通常的操作顺序:乘法和除法发生在加法和减法之前

不允许使用一元否定运算符(-)。例如,“x - x” 是一个有效的表达

因为它只使用减法,但是 “-x x” 不是,因为它使用了否定运算符

我们希望编写一个能使表达式等于给定的目标值 target 且运算符最少的表达式。

返回所用运算符的最少数量。

输入:x = 5, target = 501。

输出:8。

0 人点赞