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"
)

  

 posted on 2017-08-11 12:43  角落里的一条狗  阅读(207)  评论(0编辑  收藏  举报