手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

Go语言的fmt包中文教程

因为go的fmt.Printf支持的参数与c的printf(sprintf)不太一样,所以复制一下做个备份。
查起来快一点:

http://www.open-open.com/lib/view/open1352593106824.html
  1. mport "fmt"  
  2. 简介   
  3. Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。  
  4. 输出  
  5. 格式:  
  6. 一般:  
  7. %v   基本格式的值。当输出结构体时,扩展标志(%+v)添加成员的名字。the value in a default format.  
  8.      when printing structs, the plus flag (%+v) adds field names  
  9. %#v  值的Go语法表示。  
  10. %T   值的类型的Go语法表示。  
  11. %%   百分号。  
  12. 布尔型:  
  13. %t   值的true或false  
  14. 整型:  
  15. %b   二进制表示  
  16. %c   数值对应的Unicode编码字符  
  17. %d   十进制表示  
  18. %o   八进制表示  
  19. %q   单引号  
  20. %x   十六进制表示,使用a-f  
  21. %X   十六进制表示,使用A-F  
  22. %U   Unicode格式: U+1234,等价于"U+%04X"  
  23. 浮点数:  
  24. %b   无小数部分、两位指数的科学计数法,和strconv.FormatFloat的'b'转换格式一致。举例:-123456p-78  
  25. %e   科学计数法,举例:-1234.456e+78  
  26. %E   科学计数法,举例:-1234.456E+78  
  27. %f   有小数部分,但无指数部分,举例:123.456  
  28. %g   根据实际情况采用%e或%f格式(以获得更简洁的输出)  
  29. %G   根据实际情况采用%E或%f格式(以获得更简洁的输出)  
  30. 字符串和byte切片类型:  
  31. %s   直接输出字符串或者[]byte  
  32. %q   双引号括起来的字符串  
  33. %x   每个字节用两字符十六进制数表示(使用小写a-f)  
  34. %X   每个字节用两字符十六进制数表示(使用大写A-F)  
  35. 指针:  
  36. %p   0x开头的十六进制数表示  
  37. 木有'u'标志。如果是无类型整数,自然会打印无类型格式。类似的,没有必要去区分操作数的大小(int8, int64)。  
  38. 宽度和精度格式化控制是指的Unicode编码字符的数量(不同于C的printf,它的这两个因子指的是字节的数量。)两者均可以使用'*'号取代(任一个或两个都),此时它们的值将被紧接着的参数控制,这个操作数必须是整型。  
  39. 对于数字,宽度设置总长度,精度设置小数部分长度。例如,格式%6.2f 输出123.45。  
  40. 对于字符串,宽度是输出字符数目的最低数量,如果不足会用空格填充。精度是输出字符数目的最大数量,超过则会截断。  
  41. 其它符号:  
  42. +    总是输出数值的正负号;对%q(%+q)将保证纯ASCII码输出  
  43. -    用空格在右侧填充空缺而不是默认的左侧。  
  44. #    切换格式:在八进制前加0(%#o),十六进制前加0x(%#x)或0X(%#X);废除指针的0x(%#p);  
  45.      对%q (%#q)如果可能的话输出一个无修饰的字符串;  
  46.      对%U(%#U)如果对应数值是可打印字符输出该字符。  
  47. ' '  对数字(% d)空格会留一个空格在数字前并忽略数字的正负号;  
  48.      对切片和字符串(% x, % X)会以16进制输出。  
  49. 0    用前置0代替空格填补空缺。  
  50. 每一个类似Printf的函数,都会有一个同样的Print函数,此函数不需要format字符串,等价于对每一个参数设置为%v。另一个变体Println会在参数之间加上空格并在输出结束后换行。  
  51. 如果参数是一个接口值,将使用内在的具体实现的值,而不是接口本身,%v参数不会被使用。如下:  
  52. var i interface{} = 23  
  53. fmt.Printf("%v\n", i)  
  54. 将输出23。  
  55. 如果参数实现了Formatter接口,该接口可用来更好的控制格式化。  
  56. 如果格式(标志对Println等是隐含的%v)是专用于字符串的(%s %q %v %x %X),还提供了如下两个规则:  
  57. 1. 如果一个参数实现了error接口,Error方法会用来将目标转化为字符串,随后将被按给出的要求格式化。  
  58. 2. 如果参数提供了String方法,这个方法将被用来将目标转换为字符串,然后将按给出的格式标志格式化。  
  59. 为了避免有可能的递归循环,例如:  
  60. type X string  
  61. func (x X) String() string { return Sprintf("<%s>", x) }  
  62. 会在递归循环前转换值:  
  63. func (x X) String() string { return Sprintf("<%s>", string(x)) }  
  64. 错误的格式:  
  65. 如果提供了一个错误的格式标志,例如给一个字符串提供了%d标志,生成的字符串将包含对该问题的描述,如下面的例子:  
  66. 错误或未知的格式标志: %!verb(type=value)  
  67.      Printf("%d", hi):          %!d(string=hi)  
  68. 太多参数: %!(EXTRA type=value)  
  69.      Printf("hi", "guys"):      hi%!(EXTRA string=guys)  
  70. 缺少参数: %!verb(MISSING)  
  71.      Printf("hi%d"):            hi %!d(MISSING)  
  72. 使用非整数提供宽度和精度: %!(BADWIDTH) or %!(BADPREC)  
  73.      Printf("%*s", 4.5, "hi"):  %!(BADWIDTH)hi  
  74.      Printf("%.*s", 4.5, "hi"): %!(BADPREC)hi  
  75. 所有的错误都使用"%!"起始,(紧随单字符的格式标志)以括号包围的错误描述结束。  
  76. 输入  
  77. 一系列类似的函数读取格式化的文本,生成值。Scan,Scanf和Scanln从os.Stdin读取;Fscan,Fscanf和Fscanln 从特定的io.Reader读取;Sscan,Sscanf和Sscanln 从字符串读取;Scanln,Fscanln和Sscanln在换行时结束读取,并要求数据连续出现;Scanf,Fscanf和Sscanf会读取一整行以匹配格式字符串;其他的函数将换行看着空格。  
  78. Scanf, Fscanf, and Sscanf根据格式字符串解析数据,类似于Printf。例如,%x将读取一个十六进制数,%v将读取值的默认表示。  
  79. 格式行为类似于Printf,但有如下例外:  
  80. %p没有提供  
  81. %T没有提供  
  82. %e %E %f %F %g %G是等价的,都可以读取任何浮点数或者复合数(非复数,指科学计数法表示的带指数的数)  
  83. %s 和 %v字符串使用这两个格式读取时会因为空格而结束  
  84. 不设格式或者使用%v读取整数时,如果前缀为0(八进制)或0x(十六进制),将按对应进制读取。  
  85. 宽度在输入中被解释(%5s意思是最多从输入读取5个字符赋值给一个字符串),但输入系列函数没有解释精度的语法(木有%5.2f,只有%5f)。  
  86. 输入系列函数中的格式字符串,所有非空的空白字符(除了换行符之外),无论在输入里还是格式字符串里,都等价于1个空白字符。格式字符串必须匹配输入的文本,如果不匹配将停止读取数据并返回函数已经赋值的参数的数量。  
  87. 所有的scan系列函数,如果参数包含Scan方法(或者说实现了Scanner接口),该参数将使用该方法读取文本。另外,如果被填写的参数的数量少于提供的参数的数量,将返回一个错误。  
  88. 所有要被输入的参数都应该是基础类型或者实现了Scanner接口的数据类型的指针。  
  89. 注意:Fscan等函数可以从输入略过一些字符读取需要的字符并返回,这就意味着一个循环的读取程序可能会跳过输入的部分数据。当数据间没有空白时就会导致出现问题。如果读取这提供给Fscan系列函数ReadRune 方法,这个方法可以用来读取字符。如果读取者还提供了UnreadRune 方法,该方法将被用来保存字符以使成功的调用不会丢失数据。为了给一个没有这些功能的读取者添加这俩方法,使用bufio.NewReader。   

这样就看起来方便多了,而且。速度也快。。。。

几个GO的资源站:

  1. http://www.cnblogs.com/ztiandan/category/436475.html
  2. http://www.dotcoo.com/?tag=golang
  3. http://www.diandian.com/tag/golang
  4. http://code.google.com/p/golang-china/
  5. http://www.zhaokunyao.com/archives/category/go-lang

还有一些知名的和不知名的就不贴了。比如astaxie的GITHUB上的教程。大家都知道。。

Tags: fmt

Yii不启用LOG,记录当前所有的错误信息

在不启用LOG的情况下,如何记录错误呢?
我们都知道可以在出错的时候跳转到site/error下面那么也就相当于在输出error前将错误记录下来。
这时候我们当然是可以通过error_log来处理,也可以通过 自己写一段file_put_contents来将错误记录下来:error['errormsg'],将它保存就OK了。但有没有其他办法?

嗯,不需要自己控制程序,只要写三行代码就OK

PHP代码
  1. $logger = new CFileLogRoute();  
  2. $logger->init();  
  3. $logger->collectLogs(Yii::getLogger(),true);  

在判断完是否正确的时候就可以用这些代码将LOG存储下来。多方便 啊

Tags: yii, log

adobe大发慈悲,CS2全线免费了

说起来也算是悲哀吧。CS2其实是国内真正算是第一批写hosts破解的adobe软件系列。那时候开始大家就学会了用hosts来破解。
不过,总算也是厚道人,对于普通用户来说CS2足够他们用了。上次用CS2软件也还是在06年,一转眼6年过去了。可惜cs2里面没有fireworks,和DW,也算是有点可惜。当然,我认为从DW8后,所有的DW版本都可以不要用了。。。其实,再深究一下,DW4后,更新就很小了。何必呢?DW4才多大?

这次免费的软件共有:

XML/HTML代码
  1. Creative Suite 2  
  2. Acrobat 3D 1.0 for Windows   
  3. Acrobat Standard 7.0   
  4. Acrobat Pro 8.0   
  5. Audition 3.0  
  6. GoLive CS2    
  7. Illustrator CS2   
  8. InCopy CS2  
  9. InDesign CS2  
  10. Photoshop CS2  
  11. Photoshop Elements 4.0/5.0   
  12. Adobe Premiere Pro 2.0   

不过让人郁闷的是,MAC版 的只支持power PC的芯片,好可怜啊。。。
建议去注册一下吧,不然。adobe也就希望你们注册一下:
http://www.adobe.com/cfusion/entitlement/index.cfm?e=cs2_downloads

Creative Suite 2 Mac CS2_install_Mac.pdf 1130-0412-8377-1896-9751-5759
CS_20_IE_NonRet_D1.dmg.bin
CS_20_IE_NonRet_D2.dmg.bin
CS_20_IE_NonRet_D3.dmg.bin
VCS2.dmg
CS_2.0_IE_Extras_1.dmg.bin
  Win CS2_install_Win.pdf 1130-1414-7569-4457-6613-5551
CreativeSuiteCS2Disc1.exe
CreativeSuiteCS2Disc2.exe
CreativeSuiteCS2Disc3.exe
VCS2.zip
CS_2.0_WWE_Extras_1.exe
Acrobat 3D 1.0 for Windows Win AC3D_1.0_Volume_NACK_WWE.zip 1159-1414-7569-3493-5006-5653
Acrobat Standard 7.0 Mac 12001748.dmg 1016-0414-2428-7157-5404-6669
Win 22001904.exe 1016-1415-6379-6184-1333-2468
Acrobat Pro 8.0 Mac APRO8_Mac_WEB_WWEFG.dmg 1118-0416-1130-3724-2927-7040
Win APRO23_Win_ESD1_WWEFG.exe 1118-1414-1955-8737-8172-0350
Audition 3.0 Win ADBEAudition_loopolgy.exe 1137-1004-8571-6848-7845-8029
ADBEAudition_ESD1_WWEFGJIS.exe
ADBEAudition_loopolgy.7z
GoLive CS2 Mac GL_CS2_UE_NonRet.dmg.bin 1033-0415-6162-2671-3431-0993
Win GL_CS2_UE_NonRet.exe 1033-1418-1610-5696-5209-0095
Illustrator CS2 Mac AI_CS2_IE_NonRet.dmg.bin 1034-0416-0740-0527-2887-2375
Win AI_CS2_IE_NonRet.exe 1034-1415-6230-2341-2884-9398
InCopy CS2 Mac IC_CS2_UE_NonRet.dmg.bin 1036-0414-4367-5110-5897-2432
Win IC_CS2_UE_NonRet.exe 1036-1419-3531-6378-2148-9313
InDesign CS2 Mac ID_CS2_UE_NonRet.dmg 1037-0413-9961-4063-8457-1098
Win ID_CS2_UE_NonRet.exe 1037-1412-5094-8316-6812-7982
Photoshop CS2 Mac PhSp_CS2_English.dmg.bin 1045-0410-5403-3188-5429-0639
Win PhSp_CS2_English.exe 1045-1412-5685-1654-6343-1431
Photoshop Elements 4.0/5.0 Mac PSE4_Mac_WWE_ESD1.dmg.bin 1057-0410-8218-6295-1699-9560
Win PSE_5.0_WIN_ESD1_ENG.exe 1057-1414-3729-7573-7352-1206
Adobe Premiere Pro 2.0 Win PPRO_2.0_Ret-NH_UE.zip 1132-1280-4900-7476-5108-8019


mac用户你得看好了:

CS2 System Requirements

 

  • Mac OS X v.10.2.8–v.10.3.8. PowerPC® G4 or G5 processor
  • Microsoft® Windows® 2000/Windows XP. Intel® Pentium® III or 4 processor

悲催 .

泄密信息查询

今天有朋友在群里贴了这么一个网址:http://xiemi.unnoo.com/
说是密码泄漏很多。然后查了一下,靠。还真TMD泄漏了一两个。国内这些论坛、网站,怎么这么没有节操呢。怎么都TMD明文存密码呢。真TMD不要脸 .。。

这个网站申明说:

XML/HTML代码
  1. 声明:泄密库发布目的是让用户能通过多种方式查询自己的密码、隐私是否泄露。泄密库内容源于互联网,非泄密库主动采集。泄密库不对数据的真实性和有效性负责。泄密库不会记录用户信息。泄密库的数据库经过模糊化处理,请勿拖库。  

其实这些人都不是好东西。NND,你知道了就知道呗,宣扬干嘛呢?哎。怪不得我现在越来越不想在国内的网站混日 子了。所以现在几乎我在国内的网站的密码都一样。随便你们折腾 .。。不关我事了

Tags: 密码, 泄漏

GO 的一个小陷阱

在群里突然看到一段代码:

XML/HTML代码
  1. package main  
  2.   
  3. import (  
  4.     "fmt"  
  5. )  
  6.   
  7. var DomainId int  
  8.   
  9. func init() {  
  10.     DomainId, err :GetDomainId()  
  11.     if err != nil {  
  12.         DomainId = -1  
  13.     }  
  14.     fmt.Println(DomainId)  
  15. }  
  16.   
  17. func GetDomainId() (int, error) {  
  18.     DomainId = 1  
  19.     return DomainId, nil  
  20. }  

注意看红色背景的一条,理论上这段代码没有错,但事实上会报错了。

XML/HTML代码
  1. [上海]Asta谢()  22:29:50  
  2. 我知道  
  3. [上海]Asta谢()  22:29:55  
  4. 我踩过这个坑  
  5. [上海]Asta谢()  22:30:04  
  6. init里面不能用:=  

所以,上面的代码应该是写成:

XML/HTML代码
  1. func init() {  
  2.     var err error  
  3.     DomainId, err = GetDomainId()  
  4.     if err != nil {  
  5.         DomainId=-1  
  6.     }  
  7. }  

对比两段红色背景的代码。主要是做个笔记 .怕会忘 .

Asta谢 是谁?看这里:https://github.com/astaxie/build-web-application-with-golang ,这里有一篇他的教程,适合广大人民群众查看

Tags: go