python中的slice是在原有基礎上拷貝乙份。go中的slice則是指向生成它的陣列/切片,切最長長度不會超限。
#陣列為1,2,3,4
>>> l=[1,2,3,4]
#生成乙個內容為2,3的切片
>>> slice1=l[1:3]
>>> print(slice1)
[2, 3]
#修改其中乙個值,檢視切片和list的值是否有變化
>>> slice1[1]=5
>>> print(slice1)
[2, 5]
>>> print(l)
[1, 2, 3, 4]
最後發現單獨修改了slice切片,但是list值沒有變化,說明生成的slice是生成的乙份拷貝,跟原有的list不是相同記憶體
package main
import "fmt"
func main()
slice := data[2:4]
fmt.println(slice)
fmt.println(data)
data[2] = 666
slice[1] = 999
fmt.println(slice)
fmt.println(data)
}
輸出
feiqianyousademacbook-pro
:goyousa$ go
runslice
.go[2 3]
[0 1 2 3 4 5 6 7 8 9]
[666 999]
[0 1 666 999 4 5 6 7 8 9]
可以看出來,修改陣列,如果切片的值在其中,會被修改;反之,修改切片的值,其基於的陣列的值也會被修改。
實際上可以理解為,切片和陣列共用同一片記憶體。
Python和Go語言的區別
什麼是python?python是一種功能強大的高階程式語言,主要用於科學和工程計算。它是一種高效的語言,優雅務實,簡單而強大,適合新手和專業人士的程式設計。python支援多種程式設計範例,並提出了乙個大型標準庫,包括物件導向,命令式,功能性和程式性。go是什麼?go是一種通用程式語言,由goog...
使用者密碼加密在python和go中的應用和統一
目的是python專案遷移到go時,資料庫不用動,使用者原來的密碼資訊都可以使用 web框架是flask,加密方法直接用werkzeug.security,預設演算法 pbkdf2 sha256 鹽取預設8位,迭代次數用150000,密碼儲存格式為pbkdf2 method iterations s...
python 程式中呼叫go
雖然python優點很多,但是有乙個致命的缺點就是執行速度太慢,那麼python程式需要一些計算量比較大的模組時一般會呼叫c或者c 的 來重寫,但是c c 編寫 代價太高,耗費太多的人力,開發周期太長,那麼就想到來乙個折中的方法是用golang語言。雖然golang效能比不上c c 但是golang...