让 IPAddr
类型实现 fmt.Stringer
以便用点分格式输出地址。
例如,`IPAddr{1,`2,`3,`4}` 应当输出 `"1.2.3.4"`。
package main import ( "fmt" "strconv" //"strings" "bytes" ) type IPAddr [4]byte // 方法1:采用strings 工具包方案实现,需要引入strings //func (ipAddr IPAddr) String() string { // s := make([]string, len(ipAddr)) // for i := range ipAddr { // s[i] = strconv.Itoa(int(ipAddr[i])) // } // return strings.Join(s, ".") //} // 方法2:采用bytes.Buffer 方案实现,需要引入bytes;并且数据比较大的时候效率相当高 func (ipAddr IPAddr) String() string { var buf bytes.Buffer for i:=0; i<len(ipAddr); i++ { if i == 0 { buf.WriteString(strconv.Itoa(int(ipAddr[i]))) } else { buf.WriteString(".") buf.WriteString(strconv.Itoa(int(ipAddr[i]))) } } return buf.String() } func main() { addrs := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for n, a := range addrs { fmt.Printf("%v:%v\n", n, a) } }
这个本来是go中文指南上的一个练习题,但是我在写的时候,经常string(ipAddr[i]) 打印出来是空格看不见(ascii码中都不是可见字符);查了资料才发现是转码了;
在这里直接用了strings 工具包和strconv 工具包(strconv包使用)
https://studygolang.com/articles/6189 (Go语言中连接多个字符串)
相关推荐
Go语言作为一种现代化的系统编程语言,提供了丰富的标准库来支持这种转换。本工具专注于将16进制字符串转换为10进制的byte数组,这在处理如数据库存储、加密解密、网络通信等场景中非常常见。 1. **16进制字符串与...
在Go语言中,`byte`和`string`是两种非常常见的数据类型,它们在很多场景下都有着广泛的应用。本文将深入探讨这两种类型的底层转换以及在转换过程中可能遇到的问题。 首先,我们来看一下普通的强转方式。在Go语言中...
Go语言,亦称Golang,是由Google开发的一种开源编程语言。它的设计初衷在于提升编程效率,并解决现代多核处理器带来的性能挑战。Go语言凭借其简洁的语法、高效的编译速度、内置的并发支持、自动化的内存管理和强大的...
在Go语言中,开发网络应用程序时,我们常常需要模拟HTTP请求,这在测试、调试或者集成第三方API时尤其重要。`curl`命令行工具在这一领域非常流行,它提供了丰富的选项来构造和发送HTTP请求。然而,在实际的Go程序中...
Go语言(又称Golang)是一种静态类型的编程语言,由Google工程师Robert Griesemer、Rob Pike及Ken Thompson在2007年开始设计并开发,于2009年正式发布。它被设计成一种简洁、高效且易于学习的语言,旨在解决现代软件...
Go语言以其简洁的语法、高效的性能和内置的并发支持,在网络编程领域得到了广泛应用。本资料包提供了基于Go语言实现的TCP通信客户端和服务器端的代码及可执行程序,旨在帮助开发者理解和实践TCP通信。 首先,让我们...
Go语言拥有丰富的标准库和强大的并发支持,因此在服务器端开发、网络应用以及系统工具等领域有着广泛的应用。对于文本处理,Go语言的性能表现优秀,`Blackfriday`正是利用了这一点,为Go开发者提供了便捷的Markdown...
在本文中,我们将深入探讨如何使用Go语言实现与ActiveMQ的通信,主要关注消息的收发功能。ActiveMQ是Apache软件基金会开发的一款开源消息中间件,支持多种协议,包括我们这里提到的STOMP(Simple Text Oriented ...
Go语言拥有庞大的开发者社区和丰富的文档资源,社区的支持和帮助加速了Go语言的发展和应用。 #### 三、Go语言的语法基础 Go语言的语法简洁且易于阅读,与C语言有相似之处。下面是一些Go语言的基础语法要点: **1....
本文将详细探讨`unsafe`包中的`unsafe.Pointer`和`uintptr`指针类型,以及它们在Go语言中的应用。 1. **Golang中的指针类型** Go语言中有三种主要的指针类型: - **普通指针(*T)**:这是我们最常遇到的,用于引用...
在IT领域,Go语言(Golang)以其高效、简洁的语法和强大的并发处理能力而备受推崇。本篇文章将深入探讨如何使用Go语言实现HTML到PDF的转换,这在数据报告、电子文档生成等方面有着广泛的应用。 首先,我们需要理解...
Thrift是一种跨语言的服务开发工具,它允许我们定义服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以进行高效通信。HBase,作为Apache的一个分布式NoSQL数据库,通常使用Thrift来提供非Java客户端的...
Websocket 是一种在客户端和服务器之间建立持久性连接的协议,它允许双向通信,即服务器和客户端都可以主动发送数据。Go 语言提供了原生的 Websocket 支持,这使得在 Go 中实现 Websocket 应用变得简单高效。 首先...
Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发的、垃圾回收的、具有C风格语法的编程语言。在Go语言中实现网络编程,可以充分利用其强大的并发特性,以及简洁而高效的语法,为构建高性能...
在Go语言(Golang)中,正则表达式是通过`regexp`包来实现的,它提供了丰富的功能,使得开发者能够方便地处理字符串中的模式匹配问题。本篇文章将深入探讨Go语言中的正则表达式,帮助你更好地理解和使用这个强大的...
在Go(Golang)语言中,安全性是任何应用程序开发的核心要素,特别是在处理密码和其他敏感信息时。本篇文章将深入探讨如何在Go中生成密码安全的随机字符串,以及如何使用`ints`和`range`关键字来增强安全性。我们将...
Golang(Go语言)是一种高效、简洁的编程语言,非常适合用于构建高性能的Web应用程序和服务。下面我们将介绍如何使用Golang来实现上述的密码无感知认证流程。 ##### 第一步:搭建环境 首先,确保您的开发环境中已...
- **密钥管理**:密钥应定期更换,且不应在多个应用之间共享。可以使用如`github.com/securecookie/securecookie/file`的子库来管理密钥文件。 - **限制Cookie大小**:`securecookie`允许设置最大编码后的Cookie...
**Go-JOSE标准在Golang...总之,`Go-JOSE`是Golang中实现JOSE标准的强大工具,它提供了全面的功能,支持JWT、JWS、JWE和JWK的处理,对于需要在应用中进行身份验证和数据安全传输的开发者来说,这是一个非常有价值的库。
### Go语言中文PDF文档知识点概览 #### 一、简介 ...通过以上内容,我们不仅可以了解到Go语言的基础知识,还可以深入了解其高级特性和应用场景,这将有助于开发者更好地掌握Go语言,从而写出高质量的程序。