Does it has functions for sending data, i.e. submitting forms? I'm curious if gopher could be a sufficient lightweight web protocol for all normal real life tasks including internet banking and shopping.
No, it's entirely read-only. That's probably the main reason (outside of the University of Minnesota trying to charge licensing fees for using the protocol) that HTTP ended up replacing it. The other reason is that Gopher without non-canonical extensions can only transmit plaintext, images and binary files.
Gopher is extremely simplistic to implement because it basically can only do GET requests (but without all the header overhead).
All you need to do to retrieve a document is open a TCP connection and send the path you want to retrieve suffixed by CRLF. The server will then just return the requested data. For full text search (the only serverside expected feature for type 7 documents), add a tab character and then the search string.
The only other special feature on the client are Gopher menus which are a dedicated response type (type 1). They're basically the closest you get to rich text on Gopher - they're formatted text files which contain reference links to other addresses on Gopher.
It's all in all easy to see why Gopher got replaced. That said, I still recommend experimenting with it. It's very much a relic of a different time period, but that doesn't have to be a bad thing. HTTP and the general web stack has become rather bloated over the years due to its versatility. Gopher is laserfocused in its simplicity which gives it its own charm.
You could send search requests. The reason I remember this is because I was writing a Gopher server which had a built-in search engine.
I say "I was building" rather than "built" because two things happened: someone showed me a graphical web browser that actually was usable, and whomever owned Gopher wanted to charge money for using v2 of the protocol (I think?). So I ditched all the gopher code I had written and made an HTTP-server instead.
update: I think it was Goper+, not Gopher v2 which was the new version
No. The protocol seems very simple: connect, provide a document reference, server responds with the document, and the connection is closed. Document may contain references to other documents.
Imagine HTTP with only GET, no headers, no request bodies. RFC 1436 explicitly says:
Huh. The original HTTP (later renamed HTTP/0.9 in order to differentiate it from HTTP/1.0) is really quite similar: it appears to basically be gopher with an additional method (always GET) prepended to the document reference; no request headers, no response status code nor response headers.