go语言里的空格 go语言flag
Go语言的%d,%p,%v等占位符的使用
这些是死知识,把常用的记住,不常用的直接查表就行了
成都创新互联是一家专业提供隆林企业网站建设,专注与成都网站设计、成都做网站、H5建站、小程序制作等业务。10年已为隆林众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
golang没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符号的。
宽度与精度的控制格式以Unicode码点为单位。宽度为该数值占用区域的最小宽度;精度为小数点之后的位数。
操作数的类型为int时,宽度与精度都可用字符 '*' 表示。
对于 %g/%G 而言,精度为所有数字的总数,例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45)。
%e 和 %f 的默认精度为6
对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格式化的形式填充空格。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断。
使用起来很简单,一般配合fmt.Printf()使用,因为fmt的Printf()是有格式的输出,切忌使用Println(),否则将会以字符串的形式输出。
查看原文: golang fmt格式“占位符”
go语言可以做什么
1、服务器编程:以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
2、分布式系统、数据库代理器、中间件:例如Etcd。
3、网络编程:这一块目前应用最广,包括Web应用、API应用、下载应用,而且Go内置的net/http包基本上把我们平常用到的网络功能都实现了。
4、开发云平台:目前国外很多云平台在采用Go开发,我们所熟知的七牛云、华为云等等都有使用Go进行开发并且开源的成型的产品。
5、区块链:目前有一种说法,技术从业人员把Go语言称作为区块链行业的开发语言。如果大家学习区块链技术的话,就会发现现在有很多很多的区块链的系统和应用都是采用Go进行开发的,比如ehtereum是目前知名度最大的公链,再比如fabric是目前最知名的联盟链,两者都有go语言的版本,且go-ehtereum还是以太坊官方推荐的版本。
自1.0版发布以来,go语言引起了众多开发者的关注,并得到了广泛的应用。go语言简单、高效、并发的特点吸引了许多传统的语言开发人员,其数量也在不断增加。
使用 Go 语言开发的开源项目非常多。早期的 Go 语言开源项目只是通过 Go 语言与传统项目进行C语言库绑定实现,例如 Qt、Sqlite 等。
后期的很多项目都使用 Go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量使用 Go 语言原生开发项目的出现。
URL中的空格、加号究竟应该使用何种方式编码
URL中不能显示地包含空格这已经是一个共识,而空格以何种形式存在,在不同的标准中又不完全一致,以致于不同的语言也有了不同的实现。
rfc2396 中明确表示空格应该被编码为 %20 。
而W3C的标准中却又说空格可以被替换为 + 或者 %20 。
老许当场懵逼,空格被替换为 + ,那 + 本身只能被编码。既然如此,为什么不直接对空格进行编码呢。当然这只是老许心中的疑惑,以前的背景我们已经无法追溯,已成的事实我们也无法改变。但,空格到底是被替换为 + 还是 20% , + 是否需要被编码都是现在的我们需要直面的问题。
作为Gopher最先关注的自然是Go语言本身的实现,因此我们首先了解一下Go中常用的三种URL编码方式的异同。
使用 url.QueryEscape 编码时,空格被编码为 + ,而 + 本身被编码为 %2B 。
使用 url.PathEscape 编码时,空格被编码为 20% , 而 + 则未被编码。
使用 (Values).Encode 方法编码时,空格被编码为 + ,而 + 本身被编码为 %2B ,进一步查看 (Values).Encode 方法的源码知其内部仍旧调用 url.QueryEscape 函数。而 (Values).Encode 方法和 url.QueryEscape 的区别在于前者仅编码query中的key和value,后者会对 = 、 均进行编码。
对我们开发者而言,这三种编码方式到底应该使用哪一种,请继续阅读后文相信你可以在后面的文章中找到答案。
既然空格和 + 在Go中的URL编码方式有不同的实现,那在其他语言中是否也存在这样的情况呢,下面以PHP和JS为例。
urlencode
rawurlencode
PHP的 urlencode 和Go的 url.QueryEscape 函数效果一致,而 rawurlencode 则将空格和 + 均进行编码。
encodeURI
encodeURIComponent
JS的 encodeURI 和Go的 url.PathEscape 函数效果一致,而 encodeURIComponent 则将空格和 + 均进行编码。
在前文中已经总结了 Go 、 PHP 和 JS 对 +Gopher指北 的编码操作,下面总结一下其对应的解码操作是否可行的二维表。
上表中的 YY 和 Y 同含义,老许仅以 YY 表示在Go中推荐使用 url.PathEscape 进行编码,同时在PHP和JS中分别推荐使用 rawurldecode 和 decodeURIComponent 进行解码。
在实际的开发过程中,Gopher一定会存在需要解码的场景,此时就需要和URL编码方进行沟通以得到合适的方式解码。
那有没有通用的不需要URL编解码的方式呢?毫无疑问是有的!以 base32 编码为例,其编码字符集为 A-Z和数字2-7 ,此时对值进行base32编码后就无需url编码了。
最后,衷心希望本文能够对各位读者有一定的帮助。
参考
文章名称:go语言里的空格 go语言flag
文章起源:http://azwzsj.com/article/doiihjc.html