There are a few varieties of "paint" out there. There is simple spray paint like the Krylon, Rustoleum, and Avero paint. These are cheap, can be found in a pretty good variety of colors. They will not hold up really well to barrel heat or over time they rub off on high points and frequently rubbed areas. The plus side is the affordability and it is cheap to change colors by just spraying over what you have. Also the paint can be removed with good stripper and a lot if time and manual labor.
Then you get into two part epoxy like coatings that cure and harden over time. These are more expensive and usually require a air brush to apply properly. These can take a bit more time between coats/colors and take days to a couple weeks to get to full hardness. Duracoat is the best known product here. The plus side is it is durable. The down side is you need to sand blast it off or cost over it if you don't like it.
Then there are baked on finishes. Like the duracoat, they are durable, but you have to bake them to harden them. They are ready for the gun to be used as soon as the gun is cooled off and oiled. Still kind of pricey, and require tools and an oven to cure. Your wife will hate you if you use an oven in the house while she is home. It is stinky. Holds up really well, and needs to be blasted off .
Some folks will do a combo of one of the resin coatings in a single color, and then use Krylon to change patterns and colors for different seasons.