Go经验总结----2017.07

1. 自定义返回一个错误信息:return errors.New("invalid action”)

2.golang这种所有被大括号包裹起来的语句都不能在外面被调用。例如:if xxx{},switch xxx{},for xxx{},需要先在外面定义:

var name := ""
if xxx{
    name="zhangsan"
}else{
    name="lisi"
}
println(name)       
3. 跨包调用,函数名一定要大写,相当于PHP的public,例如:db.GetUserName();

4. 判断Map中是否存在某个key:

  _, ok := query["name"]
  if ok {
     delete(query,"name")
  }

5. 删除Map的一个key,使用delete(相当于PHP的unset):delete(query,"name")

6. 数组转换为字符串:strings.Join;字符串分割成数组:strings.split

7. 函数返回多个值,如果一个都不想接收,可以忽略等号前面的,即:func(),而不用写成: _, _ := func()

8.创建 map:

query:=make(map[string][]string)
query["id"] = []string{“aaa”,”bob”,”ccc"}

9. int64转换为字符串:

func Int642Str(num int64) string {
    return strconv.Itoa(int(num))
}

10. 一些数据类型转换的汇总:

data := fmt.Sprintf("%f", 33.3) //小数转换为字符串 %f
data := fmt.Sprintf("%d", 28) //整数转换为字符串 %d
data := fmt.Sprintf("%v", 33.3) //小数或者整数都通用 %v
sW := uint32(apiReq.ScreenWidth) //int32转换为uint32

【字符串转换为float】
lat, _ := strconv.ParseFloat(apiReq.Lat, 32)
fmt.Println(lat) //float64
fmt.Println(float32(lat)) //float32

【字符串转换为int】
int,err:=strconv.Atoi(string)   #string到int 
int64, err := strconv.ParseInt(string, 10, 64)   #string到int64  
string:=strconv.Itoa(int)   #int到string  
string:=strconv.FormatInt(int64,10)    #int64到string

【说明】
d:数字、 s:字符串、f:float、v:所有

11. 拼接字符串:

fmt.Sprintf("%v", apiReq.Lat) + "," + fmt.Sprintf("%v", apiReq.Lng) 
#可以简写为: fmt.Sprintf("%v,%v",apiReq.Lat,apiReq.Lng)

12. 关于iota

const (
    AA = iota
    BB
    CC
    DD
)
上面的代码 AA=iota,表示从0开始,那么下面的BB=1,CC=2,DD=3
如果是 AA = -iota,那么BB=-1,CC=-2,DD=-3
如果是 AA = iota+10,那么BB=11,CC=12,DD=13

13.判断一个数组类型的字段是否为空数组,len(value)==0

if len(fRespJson.ImgUrls) == 0{
 
}

14. 获取当前日期(2006-01-02 15:04:05 是固定数值):

date := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(date)
os.Exit(1)

15.打印输出

打印输出:fmt.Println(123) 或者 println(123)
终止程序:os.Exit(123)
打印数据结构:spew.Dump(string(buf)) //类似于PHP的var_dump

Visual Code 配置:

【基本配置】
// 将设置放入此文件中以覆盖默认设置
{
"window.zoomLevel": 1,
"editor.fontSize": 14,
"go.gopath": "/Users/renxing/Desktop/go",
"go.goroot": "/usr/local/go"
"workbench.editor.enablePreview": false #设置新打开的文件标签不覆盖之前的(很有用!!)
}

【vim .zshrc】
source $ZSH/oh-my-zsh.sh
source /etc/profile