有没有办法在GO中操纵延迟堆栈?

Is there any way to change the defer stack? For example, adding a call to the bottom of the defer stack, or removing the last defer placed?

The only modification possible to the defer stack is to "pop" onto it.

Having said that, you could make a defer optional with a variable to early-exit from the deferred function. Example:

func foo() {
    var skipDefer bool
    defer func() {
        if skipDefer {
            return
        }
        // Do body of defer
    }()
    // Do stuff
    if someConditionIsTrue {
        skipDefer = true
    }
    defer func() {
        // Do this one unconditionally
    }
    // Do other stuff
}

You could also manage a list of functions to be executed manually, if you really want to:

func foo() {
    var deferreds []func()
    defer func() {
        for _, f := range deferreds {
            f()
        }
    }()
    // Add to and arrange `deferreds` to your heart's content

}

The defer stack is a LIFO stack, so you can obviously influence the order in which deferred statements execute in the function body.

However, your question seems to be about modifying the defer stack in ways other than simply changing the order in which things are added to it, which is a feature that is not presently supported by the Go runtime.