浅谈go二维数组的深复制

浅谈go二维数组的深复制 在go语言中,对于一个数组的赋值,和python一样,其实并没有开辟新空间,比如下面这行代码: package main import "fmt" func main(){ source:=[]int{1,2,3,4} dist:=[]int{} dist=source dist[0]=999 //对第二个数组进行修改 fmt.Println(source) } 打印的结果,为 [999,2,3,4]。这时候如果想对第二个数组进行修改,并且不影响原数组,也就是说,想让他们两个独立,这时候就需要关键字copy package main import "fmt" func main(){ source:=[]int{1,2,3,4} dist:=[]int{} copy(dist,source) dist[0]=999 //对第二个数组进行修改 fmt.Println(source) } 输出的结果为[1,2,3,4]。这是一维数组,很好写,也很简单。 二维数组的情况 二维数组的时候,情况变得复杂起来,比如你看下面的代码 package main import "fmt" func main(){ source:=[][]int{{1,2,3,4},{5,6,7,8}} dist:=[][]int{} copy(dist,source) fmt.Println(dist)//直接对第二个数组进行输出 } 输出的结果:[] 为空,虽然没有报错,但是实际并没有成功,也就是说,copy只能复制一维的,那我们可以遍历二维数组,然后一个一个的进行复制,行不行?答案是:可以,但是对于写法有要求。先来一份正确的写法 package main import "fmt" func main(){ source:=[][]int{{1,2,3,4},{5,6,7,8}} dist:=make([][]int,len(source)) for i:= range source{ dist[i]=make([]int,len(source[i])) copy(dist[i],source[i]) } fmt.Println(dist) } 上面的代码中,有两个make,都不可以省略。第一个make开辟数组的行数,(注:len(source)的值为2,因为source只有两行。)。第二个make开辟数组的空间,这个比较好理解。下面是错误的示范。 ...

July 10, 2022 · 1 min · 123 words · IanTang

各个终端设置代理的方法

端口以11223为例子 cmd: set http_proxy=http://127.0.0.1:11223 & set https_proxy=http://127.0.0.1:11223 powershell: $Env:http_proxy="http://127.0.0.1:11223";$Env:https_proxy="http://127.0.0.1:11223" unix: export HTTP_PROXY=http://127.0.0.1:11223; export HTTPS_PROXY=http://127.0.0.1:11223; export ALL_PROXY=socks5://127.0.0.1:11223 pip: -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com #临时换源 npm config set registry https://registry.npm.taobao.org #npm 永久镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org #用cnpm代替,cnpm走国内,npm不做任何更改 to do……

July 8, 2022 · 1 min · 37 words · IanTang

Python+QT打包为单个exe的方法

Python打包exe Python打包exe用pyinstaller,很简单,网上有很多教程, 对于python程序打包,使用的都是pyinstaller,以下为pyinstaller的一些用法。 -F 只生成EXE -icon 指定exe的icon -w 去除黑框框 在生成完exe后,里面不会包含QT的ui文件,不仅是ui,images及各种媒体文件都不会包含,需要自己在源代码中指定路径(这里建议使用相对路径)。当我们想把这个程序分享给别人的时候,需要分享一个压缩包,这一点都不优雅,因为通常来说python+QT我们普通人写的都是一些小项目,因此如果能打包成一个exe,绿色运行就好了,这里介绍一个软件,enigma virtual box,它可以把程序打包为单个exe文件,绿色运行,看软件的名字就可知道,打包之后的exe相当于一个虚拟机,里面包含了所有文件。 软件官网:EnigamaVirtualBox官网

July 8, 2022 · 1 min · 13 words · IanTang

manjaro_install

manjaro-install 设置国内源 $sudo pacman-mirrors-i -c China -m rank 编辑archlinuxcn sudo nano /etc/pacman.conf 添加以下代码 [archlinuxcn]Siglevel = Optional TrustedOnly Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch 或者这个 [archlinuxcn]SigLevel = Optional TrustedOnly Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch 导入密钥 先升级 sudo pacman -Syy 再导入密钥 sudo pacman -S archlinuxcn-keyring 或者直接 sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring 中文输入法 安装输入法 sudo pacman -S fcitx-im fcitx-configtool fcitx-sogoupinyin 配置输入法 编辑 sudo nano /etc/enviroment 在文件内写入三行 export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" 重启生效 中文输入法二,fcitx5 卸载之前的fcitx sudo pacman -Rc fcitx ...

July 21, 2020 · 2 min · 317 words · IanTang

解决origin下载慢问题

解决origin下载慢问题 最简单的方法是开加速器,但是加速器的速度会有限速;其次简单的方法是直接挂代理,对大部分人来说也是最难的方法;有些人会在网上去找hosts的更改方法,麻烦不说,找到的ip不一定是最适合自己的。有一个软件可以直接更改hosts文件,可以列出ip列表并测延迟,而不用到处找ip。 UsbEAm_hosts_Editor_v3.5 可以直接测延迟然后选择 之后如果不想用的话可以直接恢复默认hosts; 工具直接去原文链接下载 原文链接 原文

July 20, 2020 · 1 min · 8 words · IanTang