1. 程式人生 > >golang學習之指標、記憶體分配

golang學習之指標、記憶體分配

 1 func pointer_test() {
 2     //空指標,輸出為nil
 3     var p *int
 4     fmt.Printf("p: %v\n", p)
 5     //指向區域性變數,變數值初始為0
 6     var i int
 7     p = &i
 8     fmt.Printf("p: %v,%v\n", p, *p)
 9     //通過指標修改變數數值
10     *p = 8
11     fmt.Printf("p: %v,%v\n", p, *p)
12     //陣列的初始化及輸出
13     m := [3]int{3, 4, 5
} 14 fmt.Printf("m:%v--%v,%v,%v\n", m, m[0], m[1], m[2]) 15 //指標陣列的初始化及輸出 16 //j, k, l := 3, 4, 5 17 //x := [3]*int{&j, &k, &l} 18 x := [3]*int{&m[0], &m[1], &m[2]} 19 fmt.Printf("x:%v,%v,%v\n", x[0], x[1], x[2]) 20 fmt.Printf("*x:%v,%v,%v\n", *x[0], *x[1], *x[2
]) 21 22 var n [3]*int 23 n = x 24 fmt.Printf("n:%v,%v,%v\n", n[0], n[1], n[2]) 25 //指向陣列的指標,也即二級指標的使用 26 y := []*[3]*int{&x} 27 fmt.Printf("y:%v,%v\n", y, y[0]) 28 fmt.Printf("*y[0]:%v\n", *y[0]) 29 fmt.Printf("*y[][]:%v,%v,%v\n", *y[0][0], *y[0][1], *y[0][2]) 30 /* 31 *X -> v
32 [3]X -> [v0][v1][v2] 33 []X -> [v0]...[vi] 34 [3]*X -> [p0][p1][p2] 35 | | | 36 j k l 37 []*[3]*X -> [n0]...[ni] 38 | ... | 39 [p0]->j 40 [p1]->k 41 [p2]->l 42 */ 43 } 44 45 type Student struct { 46 name string 47 id int 48 score uint 49 } 50 51 func memery_test() { 52 //new分配出來的資料是指標形式 53 p := new(Student) 54 p.name = "China" 55 p.id = 63333 56 p.score = 99 57 fmt.Println(*p) 58 //var定義的變數是數值形式 59 var st Student 60 st.name = "Chinese" 61 st.id = 666333 62 st.score = 100 63 fmt.Println(st) 64 //make分配slice、map和channel的空間,並且返回的不是指標 65 var ptr *[]Student 66 fmt.Println(ptr) //ptr == nil 67 ptr = new([]Student) //指向一個空的slice 68 fmt.Println(ptr) 69 *ptr = make([]Student, 3, 100) 70 fmt.Println(ptr) 71 stu := []Student{{"China", 3333, 66}, {"Chinese", 4444, 77}, {"Chince", 5555, 88}} 72 fmt.Println(stu) 73 }

相關推薦

golang學習指標記憶體分配

1 func pointer_test() { 2 //空指標,輸出為nil 3 var p *int 4 fmt.Printf("p: %v\n", p) 5 //指向區域性變數,變數值初始為0 6 var i int 7 p = &i

Golang學習GOROOTPATHGOPATH及go get

1. GOROOT GOPATH 及 PATH 設定 a.新增系統變數GOROOT:安裝完Go第一件事就是設定GOROOT。例如我的Go安裝在C:\Go目錄,則要設定 GOROOT = C:\Go b.修改環境變數PATH:將%GOROOT%\bin加到環境變數PATH

結構體定義結構體指標記憶體分配指標結構體形參的深入理解

說明:此程式為深入學習資料結構時候,對於資料結構最重要的基礎(結構體、指標、記憶體分配) 方面的一些理解,我自己通過這段程式說明一些自己得到的結論;希望對看到這篇程式的c愛好者 有幫助,如果有理解錯誤的地方希望各位聯絡我,一起討論學習.說實話,我學習c就半年吧,除了 上課自學的,發現最難的部分就是指標了.廢話

近一周學習-----vuewebpack安裝

利用 .com image bpa ins 一周 all webpack cnblogs 1、vue安裝 1.1、利用npm install -g vue vue安裝完畢 2、webpack安裝 npm install webpack -g w

java學習繼承多態

之間 對象 才有 隱患 來安 clas dem void 定義 java面向對象的三大法寶:封裝、繼承、多態(抽象) 繼承: 1.提高了代碼的復用率 2.讓類與類之間產生了關系,有了這個關系,才有了多態的特性 註意:不要為了獲取其它類的功能、簡化代碼而繼承, 必須是類與類之

3.vuex學習mutationsmapMutations

methods -- ext ans src AD nodes mounted efault mutations狀態更改   在mutations對象中創建更改state狀態的方法。mapMutations是vuex提供的輔助函數 在store.js中 import V

tensorflow學習ConstantVariableplaceholder

Constant、Variable、placeholder 自己理解同時結合網路多方資源,如有侵權,請通知我刪除。 前提知識是理解tensor即張量的含義。 tf.constant(value ,dtype = None ,shape = None ,n

機器學習權重偏置自動調參

背景 這段時間在學習神經網路相關的內容,神經網路的演算法裡面只要給定它特徵值丟進去,演算法就會自身跟新權重和誤差(偏置)。其實學習機器學習內容的時候,我對這些演算法過程是理解的,但是我對細節是模糊的。 所以,我需要寫點程式碼,在電腦裡面跑一下,自己才能領會到演算法的真正含義。

java基礎學習函式陣列

1、函式 1、函式的定義 函式是定義在類中有特定功能的一小段程式,也稱方法。定義格式: 修飾符 返回值型別 函式名(引數型別 形式引數1,引數型別 形式引數2, ) { 執行語句; return 返回值; } 2、功能 定義函式可以對功能程式碼進行封裝,提高程式碼的複用性

C語言入門(十八)指標字串函式

如何利用指標運算元組 int ages[3] = {1, 3 , 5}; ages[0] = 998; printf("ages[0] = %i\n", ages[0]); int *p = ages; // int *p = &a

C++PrimerPlus學習之類和動態記憶體分配

複製建構函式 如果沒有定義,編譯器將預設提供複製建構函式 原型Class_name(const Class_name &) StringBad(const StringBad &) 何時呼叫StringBad ditto(motto); Str

C#學習ObjectOrientedRecord

一、思維導圖   二、知識點析剖 1、面向物件 (1)類:當一個窗體程式碼太多時,不便於檢視和寫入,可以使用類來簡化程式碼視窗,使用get關鍵字來獲取一個公有屬性的值,          而使用set來設定一個公有屬性的值,如:&nbs

C++基礎學習之類和動態記憶體分配(9)

主要學習內容: 對類成員使用動態記憶體分配。 隱式顯式複製建構函式。 隱式顯式過載賦值運算子。 在建構函式中使用new所必須完成的工作。 使用靜態類成員。 將定位new運算子用於物件。 使用指向物件的指標。 實現佇列抽象資料型別。(像第(

先看題後學習JavaScript的記憶體空間及資料型別

  看到這道題時候你會想到什麼? 好多賦值啊~~~~ 從哪裡入手啊!別怕,開始compiling 思考: 當看到這個題的時候,我們需要考慮到這個考察重點是哪方面,如這道題,從這5行中,大致可能想到:JS變數、賦值、資料型別 前兩行中進行變數賦值,這就可以聯想到js的資

java學習superfinalstatic關鍵字及匿名物件

一  super關鍵字   1 在建立子類物件時,父類的構造方法會先執行,因為子類中所有構造方法的第一行有預設的隱式super();語句。 2如果子類的構造方法第一行寫了this呼叫了本類其他構造方法,那麼super呼叫父類的語句就沒有了。 只要是構造方法預設第一行都是super(

Angular cdk 學習 CoercionKeycodesPlatform

       cdk(Component Dev Kit)是由material團隊開發與維護的。自定義元件的一些小kit。首先不管是啥技術咱們都的先找到官方文件,所以先給出兩個官方文件連結cdk npm連結 https://www.npmjs

golang學習筆記---函式方法和介面

函式:對應操作序列,是程式的基本組成元素。 函式有具名和匿名之分:具名函式一般對應於包級的函式,是匿名函式的一種特例,當匿名函式引用了外部作用域中的變數時就成了閉包函式,閉包函式是函數語言程式設計語言的核心。方法是綁 定到一個具體型別的特殊函式,Go語言中的方法是依託於型別的,必須在編譯時靜態繫結 介面

ADO.Net學習SqlConnection Sqlcommand的應用

ADO.NET 組成資料提供程式的類: Connection是用來來建立和資料庫的連線。 Command是用來執行SQL命令和儲存過程。 DataReader是與DataSet最大的不同是有連線式的,每次對資料庫進行存取都會影響到資料庫。 Data

golang 學習語言切片Slice Range範圍 MAP 遞迴函式

Go 語言切片是對陣列的抽象。 Go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內建型別切片(“動態陣列”),與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。 定義一個未指定大小的切片

基礎設施與應用監控指標監控和報警簡介

概述 瞭解基礎設施和系統的狀態對於確保服務的可靠性和穩定性至關重要。有關部署的執行狀況和效能的資訊不僅可以幫助您的團隊對問題做出反應,而且還可以讓他們放心地進行更改。獲得這種洞察力的最佳方法之一是使用強大的監控系統,該系統收集指標,視覺化資料,並在事情出現故障時