go - 是否有扩展 ipv6 地址的内置功能?
问题描述
我正在开发一个需要扩展 IPv6 地址的项目。Go中有内置函数吗?
我目前正在做的是
ipv6 := "fe80:01::af0"
addr := net.ParseIP(ipv6)
fmt.Println(addr.String())
但这仍然打印
fe80:01::af0
我真正需要的是
fe80:0001:0000:0000:0000:0000:0000:0af0
解决方案
标准库中没有任何东西可以做到这一点,但是编写自己的函数很容易。一种可能的方法(许多):
func FullIPv6(ip net.IP) string {
dst := make([]byte, hex.EncodedLen(len(ip)))
_ = hex.Encode(dst, ip)
return string(dst[0:4]) + ":" +
string(dst[4:8]) + ":" +
string(dst[8:12]) + ":" +
string(dst[12:16]) + ":" +
string(dst[16:20]) + ":" +
string(dst[20:24]) + ":" +
string(dst[24:28]) + ":" +
string(dst[28:])
}
推荐阅读
- typescript - 如何在 GitHub 的 PR 上运行 linter?
- python - 反正有没有用 Python 从 HTML 中获取下一个文本元素?
- javascript - @typescript-eslint/parser parserOptions.ecmaVersion 被忽略/不 linting
- vue.js - 在 Vue JS 和 Firebase 中循环设置其值时不覆盖值
- graph - 从节点获取图中的所有路径,但只有终止的路径
- c++ - 分段错误(核心转储)
- java - 当我在 CUCUMBER 中运行 runner 类时,得到“courgette.runtime.CourgetteException: Unable to create the 'target\chrome' directory”
- java - 使用 intellij 中的 gridLayoutmanager 在 1 行上合并 2 列
- python - 如何在 act_window odoo 中添加域
- scala - 函数文字难题上的隐式参数