目录
注意事项
time 的 Format 函数参数使用常量, 不要使用字符串
在 for range 闭包里使用 goroutine 注意: 要传参数进去
目录
@
注意事项
package main 表示当前脚本是程序入口, 含有 main 函数
如果不是入口, 只是单纯的一个包的话, 就尽量与当前目录文件夹的名称保持一致, 表示一个包的脚本
slice 的 append 函数的真面目
slicez 作为参数传递时是引用类型的, 也就是把地址传进去了, 要是做了一般的修改, 就是真的修改了
- package main
- import (
- "fmt"
- )
- func ppp(s []int) {
- s = append(s,3)
- }
- func main(){
- s := make([]int,0)
- fmt.Println(s)
- ppp(s)
- fmt.Println(s)
- }
结果是:
[] []
本来应该改变的, 为什么没有变?
因为 append 函数实际上不是在后边加上一段空间, 而是重新找了块内存, 而原先 s 的没有动, ppp() 里面如果返回了, 就对了意思
所以使用 slice 会修改时, 建议尽量使用返回值
time 的 Format 函数参数使用常量, 不要使用字符串
- package main
- import (
- "fmt"
- "time"
- )
- func main() {
- t := time.Now()
- fmt.Println(t.Format(time.ANSIC))
- fmt.Println(t.Format("Mon Jan _2 15:04:05 2006"))
- }
建议使用第一行的输出方式, 第二行不知道会出什么样的问题...balabala
在 for range 闭包里使用 goroutine 注意: 要传参数进去
- func main() {
- s := []string{"a", "b", "c"}
- for _, v := range s {
- go func() {
- fmt.Println(v)
- }()
- }
- select {}
- }
上面的结果无法得到想要的结果
- func main() {
- s := []string{"a", "b", "c"}
- for _, v := range s {
- go func(v string) {
- fmt.Println(v)
- }(v)
- }
- select {}
- }
这个代码可以分别输出 a,b,c, 但是每次顺序都不同, 研究一下..
来源: http://www.bubuko.com/infodetail-3167240.html