注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

Go语言圣经笔记  

2016-10-20 09:59:24|  分类: golang |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、fmt.Sprintf 各个参数

%d          十进制整数
%x, %o, %b  十六进制,八进制,二进制整数。
%f, %g, %e  浮点数: 3.141593 3.141592653589793 3.141593e+00
%t          布尔:true或false
%c          字符(rune) (Unicode码点)
%s          字符串
%q          带双引号的字符串"abc"或带单引号的字符'c'
%v          变量的自然形式(natural format)
%T          变量的类型
%%          字面上的百分号标志(无操作数)


2、计算时间间隔

start := time.Now()
...
time.Since(start).Seconds()


3、switch的几种小技巧

func Signum(x int) int {
    switch {
    case x > 0:
        return +1
    default:
        return 0
    case x < 0:
        return -1
    }
}

这种形式叫做无tag switch(tagless switch);这和switch true是等价的。可以免去写一大堆if... else if ...
如果加上 fallthrough 可以免去写一堆if ... if ....

4、关键字和类型以及系统函数

break      default       func     interface   select
case       defer         go       map         struct
chan       else          goto     package     switch
const      fallthrough   if       range       type
continue   for           import   return      var

内建常量: true false iota nil

内建类型: int int8 int16 int32 int64
          uint uint8 uint16 uint32 uint64 uintptr
          float32 float64 complex128 complex64
          bool byte rune string error

内建函数: make len cap new append copy close delete
          complex real imag
          panic recover


5、if 的块级作用域

if f, err := os.Open(fname); err != nil { // compile error: unused: f
    return err
}
f.ReadByte() // compile error: undefined f
f.Close()    // compile error: undefined f

这里会出现编译错误,但是下面的写法是可以的

if f, err := os.Open(fname); err != nil {
    return err
} else {
    // f and err are visible here too
    f.ReadByte()
    f.Close()
}


6、golang 函数返回当有指针类型的时候,需要 new 一下:
func (p *RpcServiceImpl) DynamicPrice(q *minPrice.QueryMinPrice) (pResp *minPrice.DynamicPriceResp, err error){
var resp bus.DynamicResp
pResp = new(minPrice.DynamicPriceResp) //这里一定要new一下
... ...
return
}

7、初始化make数组的注意点:

list = make([]Alist,0,10) //这个表示申请一个数组,长度为0,容量为10
list = make([]Blist,10)    //这个表示申请一个数组,长度为10,容量为10

那么问题来了,如果你想使用append方式,那么请使用第一种方式申请数组
如果想使用 i 这种下标来赋值数组,那么需要使用第二种方式申请数组
  评论这张
 
阅读(180)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018