Addressing your new comment:
Yes, we can assign to each $A\subseteq\mathbb{N}$ a function $f_A:\mathbb{N}\rightarrow\mathbb{N}$ in an injective way - that is, such that $f_A=f_B$ iff $A=B$. (I'm ignoring the question of whether your specific construction works, that's beside the point.) More snappily, $\vert 2^\mathbb{N}\vert=\vert\mathbb{N}^\mathbb{N}\vert$.
However, this has nothing to do with Godel's incompleteness theorem! In the incompleteness theorem we're not saying that we have a way to represent every $g:\mathbb{N}\rightarrow\mathbb{N}$ by a natural number; all we're saying is that we have a way to represent every "simple" $g:\mathbb{N}\rightarrow\mathbb{N}$ by a natural number. And the set of "simple" functions is indeed countable, so there's no contradiction.
Specifically, "simple" for Godel means "computable" (or "recursive"). That said, it turns out that's overkill: for example, it's enough to just look at the primitive recursive functions (and indeed this is what Godel originally did).
Now a bit of an editorial comment:
Before tackling the incompleteness theorem you really need to be familiar with the basics of computable functions. Fully understanding the following facts is a good starting point:
The set of computable functions is countable.
Every computable function is definable in the structure $\mathfrak{N}=(\mathbb{N};+,\times)$, but not conversely.
- The former is basically Kleene's $T$ predicate; for the latter, note that the set of $\mathfrak{N}$-definable functions is also countable so a cardinality argument won't help.
However, a broad class of functions are computable - for example, the characteristic function of the set of powers of $10$, or of the set of Godel numbers of well-formed formulas.
The proof of Godel's theorem then really kicks off properly with the result that all computable functions are representable in the theory in question (usually PA or similar).