发送消息后从TCP套接字断开连接是否可以保证传递?

I couldn't find much information on this, but I have a simple sequence of code like:

// does it wait on Write() until successful handshake or attempt failure
// or just continue on straight away?
net.conn.Write(buffer[1:60])
conn.Close()

Does this guarantee delivery to client/server before Close is called? Or will Close be called after the message sent, and potentially close the connection during the handshakes if they were too slow to complete in time ?

Does this guarantee delivery to client/server before Close is called?

No.

Or will Close be called after the message sent

Both the write and the close are queued for asynchronous execution.

and potentially close the connection during the handshakes if they were too slow to complete in time?

Close will queue a close for the connection. If the close handshake takes too long the connection will be reset.

Nothing can "guarantee delivery" (what if the other end of the connection just crashed?). However, Write is a blocking call, and if you check the returned error value, you can at least know whether or not the write succeeded before you call Close.