這是一個建立於
的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport ("errors""fmt""strconv""strings")type IntIP struct {IP stringIntip int}func main() {var x *IntIP = &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, 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 >> 16 & 255i1 := self.Intip >> 24 & 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}