package main;

import (
"fmt"
"time"
"sync"
) //修改slice的坑
func add(s []int) {
//当s通过append添加元素时,这里会发生内存重新分配
//s会指向新的地址
s = append(s, 3);
} //当需要对slice进行修改时,建议通过函数返回值把该slice返回
func add2(s []int) []int {
s = append(s, 3);
return s;
} func main() {
//下面的二次打印结果都是[]
s := make([]int, 0);
fmt.Println(s);
add(s);
fmt.Println(s); //add2()返回的slice才是真正的修改后的slice
s = add2(s);
fmt.Println(s); //时间的格式化输出的坑
t := time.Now();
fmt.Println(t.Format(time.ANSIC));
//注意下面的字符串不能写错,写错了输出时间会不对
fmt.Println(t.Format("2006-01-02 15:04:05")); //for range中闭包的坑
a := []string{"a", "b", "c"};
swg := sync.WaitGroup{};
swg.Add(3);
for _, v := range a {
go func() {
//注意,这里的闭包,v是引用的
//运行三次后,实际v指向的是slice最后一个元素
fmt.Println(v);
swg.Done();
}();
}
swg.Wait(); swg.Add(3);
for _, v := range a {
//修改成如下形式,以参数的形式传递进去
go func(s string) {
fmt.Println(s);
swg.Done();
}(v);
}
swg.Wait();
}

  

go语言中的坑的更多相关文章

  1. Java语言中的这些知识点有没有用过,工作中有没有入过这些坑?

    在Java语言中,有一些相对生僻的知识,平时用的机会可能不是很多,但如果不了解不掌握这些知识点的话,也可能会掉入陷阱之中,今天我们就来初步梳理一下: 1. goto是java语言中的关键字. &quo ...

  2. C语言中内存分配那些事儿

    C程序的内存结构 C语言的之所以复杂,首先它的内存模型功不可没.不像某些那样的高级语言只需要在使用对象的时候,用new创建.所有之后的事情,你不需要操心.对于C语言,所有与内存相关的东西,都需要熟悉, ...

  3. go语言中的数组切片:特立独行的可变数组

    go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...

  4. Go语言中的面向对象

    前言 如果说最纯粹的面向对象语言,我觉得是Java无疑.而且Java语言的面向对象也是很直观,很容易理解的.class是基础,其他都是要写在class里的. 最近学习了Go语言,有了一些对比和思考.虽 ...

  5. C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

    一.go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 代码示例: go代码:testC.go 1 pa ...

  6. 详解Go语言中的屏蔽现象

    在刚开始学习Go语言的过程中,难免会遇到一些问题,尤其是从其他语言转向Go开发的人员,面对语法及其内部实现的差异,在使用Go开发时也避免不了会踩"坑".本文主要针对Go设计中的屏蔽 ...

  7. 在Go语言中记录log:seelog包

    前两周调bug调的吐血,虽然解决了但是还是挺浪费时间的.跟同事聊了聊,觉得我们现在项目中的日志记录太少了,导致出了问题不知道怎么下手,还得自己改代码记录日志,然后排查问题.这样如果将来还有bug的话还 ...

  8. Torch-RNN运行过程中的坑 [2](Lua的string sub函数,读取中文失败,乱码?)

    0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string( ...

  9. Torch-RNN运行过程中的坑 [0](一些基础概念)

    0.Lua & LuaJIT简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua 是巴 ...

随机推荐

  1. mysql 设置多个字段聚合自增

    DROP TEMPORARY TABLE IF EXISTS ttp_firstInvest; CREATE TEMPORARY TABLE ttp_firstInvest ( userid varc ...

  2. 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]

    [Maven]项目打包-war包-Jar包[IDEA将项目打成war包] 2017年01月31日 00:21:06 阅读数:22912 标签: ideamaven发布博客插件 更多 个人分类: ❷ J ...

  3. Android 深入浅出 - Android系统启动过程

    Activity的类继承关系及跟踪Activity的启动 Android系统启动过程 https://study.163.com/course/courseLearn.htm?courseId=213 ...

  4. C# CefSharp MemoryStreamResponseFilter这个类使用过程中遇到的bug,dataIn.CopyTo(dataOut)异常

    使用这个类,可以获取请求的所有数据,可用来下载网站的图片.js等 cef给出的源码 dataIn.CopyTo(dataOut);这句代码,有时候会有问题.问题是这个:dataIn.length 会大 ...

  5. 微服务之间的调用(Ribbon与Feign)

    来源:https://blog.csdn.net/jrn1012/article/details/77837658 使用Eureka作为服务注册中心,在服务启动后,各个微服务会将自己注册到Eureka ...

  6. Centos 7升级内核

    检查当前 CentOS 系统内核版本 uname -sr 在 CentOS 7 上启用 ELRepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KE ...

  7. ssh问题:ssh_exchange_identification: Connection closed by remote host

    ssh问题:ssh_exchange_identification: Connection closed by remote host... 刚刚一个朋友告诉我SSH连接不上服务器了,重启电脑也不管用 ...

  8. wamp添加本地虚拟域名

    修改一下文件位置,引入文件 下面是配置文件添加配置指向目录 <VirtualHost *:80> ServerAdmin 979996962@qq.com DocumentRoot &qu ...

  9. 03_java基础(四)之方法的创建与调用

    import org.junit.Test; public class Main { public static void main(String[] args) { System.out.print ...

  10. python-ceilometerclient命令行(1)

    1.导入模块,可以动态获取模块中方法并调用,其功能与from...import...一致 2. callback = getattr(actions_module, attr) 从模块中获取方法. 调 ...