This is a creation in Article, where the information may have evolved or changed.
Package Mainimport ("Errors" "FMT" "StrConv" "strings") type Intip struct {IP stringintip int}func main () {var x *intip = & Amp;intip{ip: "192.168.1.1"}fmt. PRINTLN (x) X.tointip () fmt. Println (*x)}func (self *intip) string () string {return self. Ip}func (self *intip) Tointip (int.) (int, error) {intip, err: = Converttointip (self). IP) If err! = Nil {return 0, err}self. Intip = Intipreturn Intip, nil}func (self *intip) ToString () (string, error) {i4: = self. Intip & 255i3: = self. Intip >> 8 & 255i2: = self. Intip >> & 255i1: = self. Intip >> & 255if i1 > 255 | | I2 > 255 | | i3 > 255 | | I4 > 255 {return "", errors. New ("Isn ' t a intip Type.")} Ipstring: = Fmt. Sprintf ("%d.%d.%d.%d", I4, i3, I2, i1) self. ip = Ipstringreturn ipstring, nil}func converttointip (IP string) (int, error) {ips: = strings. Split (IP, ".") E: = errors. New ("Not A IP.") If Len (ips)! = 4 {return 0, E}var Intip intfor k, V: = range IPs {i, Err: = StrConv. Atoi (v) if err! = Nil | | I > 255 {return 0, E}intip = Intip | I<<uint (8* (3-k))}return Intip, nil}