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