code: func GetPublicIPv6() ([]*net.IPAddr, error) {
  	addresses, err := net.InterfaceAddrs()
  	if err != nil {
  		return nil, fmt.Errorf("Failed to get interface addresses: %v", err)
  	}
  
  	var addrs []*net.IPAddr
  	for _, rawAddr := range addresses {
  		var ip net.IP
  		switch addr := rawAddr.(type) {
  		case *net.IPAddr:
  			ip = addr.IP
  		case *net.IPNet:
  			ip = addr.IP
  		default:
  			continue
  		}
  		if ip.To4() != nil {
  			continue
  		}
  		if isPrivate(ip) {
  			continue
  		}
  		addrs = append(addrs, &net.IPAddr{IP: ip})
  	}
  	return addrs, nil
  }
docs: // GetPublicIPv6 returns the list of all public IPv6 addresses
  // on all active interfaces.