1.字符串空为""
2. 传递的数组是原数组的拷贝,所以是无法通过传递数组的方法去修改原地址的数据的。在GO语言中除了切片(slice)、集合(map)、通道(channel)和接口(interface)之外,其它的都是值传递
3.在多行的Slice、Array和Map语句中遗漏逗号
package main func main() {
x := []int{
1,
2 //error,需要加,
}
_ = x
}
Compile Errors:
syntax error: unexpected semicolon or newline, expecting comma or }
4.闭包中使用的变量若非作为参数传递,则都是引用传递
package main import (
"fmt"
) func main() {
s := []string{"a","b","c"}
for _,v := range s {
go func () {
fmt.Println(v)
}()
}
select {}
}
输出
c
c
c
fatal error: all goroutines are asleep - deadlock!
5.append 方法在添加数据后超过原始长度会重新创建新的存储空间
package main import (
"fmt"
) func Ping(s []int) {
s = append(s,3)
}
func main() {
s := make([]int, 0)
fmt.Println(s)
Ping(s)
fmt.Println(s)
}
输出结果:
[]
[]
最优写法:
package main import (
"fmt"
) func Ping(s []int) []int {
s = append(s,3)
return s
}
func main() {
s := make([]int, 0)
fmt.Println(s)
s = Ping(s)
fmt.Println(s)
}
6.使用time的Format时,使用自带常量
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
// Handy time stamps.
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
)