头图

相信这些问题,大家在学习之时肯定是知道的,只不过在编程时写着写着不知觉地就给写歪了。

关键是什么呢?关键是有些坑还不容易发现,导致排查一个非常简单和初级的问题都有可能花费一天、半天的大量时间。这就非常让人恶心的了。

特别地,对于初学者来说,平时大家多注意注意还是可以避免踩坑的。

一、简短变量申明与初始化 :=
1、只能用在函数内
2、必须至少要声明一个新的变量

// 错误示例一
num := 1
num := 2 // 编译错误:no new variables

// 错误示例二
f, err := os.Open(infile)
f, err := os.Create(outfile) // 编译错误:no new variables

// 正确示例
f, err := os.Open(infile)
f2, err := os.Create(outfile)

二、常量
1、常量的数据类型只能是布尔型、数字型(整数型、浮点型、复数)、字符串
2、常量表达式的值在编译期计算,而不是在运行期。所以常量的值必须是在编译时就能够确定的,自定义函数均属于未知,但内置函数是可以使用的。

三、struct、slice、map、channel
1、结构体变量的所有字段都会有零值,不能通过是否等于 nil 判断是否为空,应该通过判断结构体的字段是否为零值
2、定义slice、map、chnnel 变量时,需要通过 make 分配内存,否则需要判断变量是否为 nil

// 错误示例
var s []string
fmt.Println(s[0])
s[0] = "abc"

var m map[string]string
fmt.Println(m["name"])
m["name"] = "abc"

// 正确示例
s := make([]string, 10)
fmt.Println(s[0])

s := make([]string, 0)
s = s.append("abc")

m := make(map[string]string)
m2 := map[string]string{}

ch := make(chan int)
ch := make(chan int, 1)

勇敢努力的乌龟
1 声望0 粉丝

不要在该奋斗的年纪选择了安逸,只管努力,剩下的交给时间就好。