// Copyright 2011 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package netconst hexDigit = "0123456789abcdef"// A HardwareAddr represents a physical hardware address.typeHardwareAddr []bytefunc ( HardwareAddr) () string {iflen() == 0 {return"" } := make([]byte, 0, len()*3-1)for , := range {if > 0 { = append(, ':') } = append(, hexDigit[>>4]) = append(, hexDigit[&0xF]) }returnstring()}// ParseMAC parses s as an IEEE 802 MAC-48, EUI-48, EUI-64, or a 20-octet// IP over InfiniBand link-layer address using one of the following formats://// 00:00:5e:00:53:01// 02:00:5e:10:00:00:00:01// 00:00:00:00:fe:80:00:00:00:00:00:00:02:00:5e:10:00:00:00:01// 00-00-5e-00-53-01// 02-00-5e-10-00-00-00-01// 00-00-00-00-fe-80-00-00-00-00-00-00-02-00-5e-10-00-00-00-01// 0000.5e00.5301// 0200.5e10.0000.0001// 0000.0000.fe80.0000.0000.0000.0200.5e10.0000.0001func ( string) ( HardwareAddr, error) {iflen() < 14 {goto }if [2] == ':' || [2] == '-' {if (len()+1)%3 != 0 {goto } := (len() + 1) / 3if != 6 && != 8 && != 20 {goto } = make(HardwareAddr, )for , := 0, 0; < ; ++ {varboolif [], = xtoi2([:], [2]); ! {goto } += 3 } } elseif [4] == '.' {if (len()+1)%5 != 0 {goto } := 2 * (len() + 1) / 5if != 6 && != 8 && != 20 {goto } = make(HardwareAddr, )for , := 0, 0; < ; += 2 {varboolif [], = xtoi2([:+2], 0); ! {goto }if [+1], = xtoi2([+2:], [4]); ! {goto } += 5 } } else {goto }return , nil:returnnil, &AddrError{Err: "invalid MAC address", Addr: }}
The pages are generated with Goldsv0.7.3-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.