目錄:
1:世界開始之初-變數
2:go 語言中的基礎型別
3:go自增語法、指標
4:go不能使用的語法
第1種:先定義變數,再賦值 。 var 變數名 資料型別
var name string第2種:定義時直接賦值。var 變數名 = 「man」name = "cfp"
fmt.println("name:", name) //name: cfp
fmt.printf("name:%s\n", name) //name:cfp
func main()第3種:定義直接賦值,使用自動推導(最常用)
func main()第4種:平行賦值 (同時定義兩個變數)
i,j := 10,20要知道如果要定義全部變數的話,必須使用var 關鍵字,不能用我們常用的那種賦值i,j:=j,i (不借助中間變數,直接對換兩個變數的值)
go語言是靜態型別語言,因此變數(variable)是有明確型別的,編譯器也會檢查變數型別的正確性。
計算機中資料儲存的最小單位為bit(位),0或者1
byte:計算機中資料的基本單元,1位元組=8bit,資料在計算機中儲存或者計算,至少為1個位元組
有符號和無符號的區別:int8 範圍 -128-127,uint8 範圍:0-255
當乙個變數被宣告之後,系統自動賦予它該型別的零值:
int 為 0
,float 為 0.0
,bool 為 false
,string 為空字串
,指標為 nil
所有的內存在 go 中都是經過初始化的。
package main3.1:自增import "fmt"
var age int
func main()
c裡面有:i++ i-- ++i --i
go裡面只有:i++ i-- 而且必須單獨寫一行
3.2:指標
go跟c一樣裡面也有指標。
定義乙個空指標:
go語言在使用指標時,會使用內部的垃圾**機制(gc :garbage collector)不需要開發人員手動釋放記憶體。
c語言不允許返回棧上的指標,但是go語言可以返回棧上的指標【因為他有垃圾**機制】,
程式會在編譯的時候就確定了變數的分配位置。編譯的時候,如果發現有需要的話,會將變數分配到堆上。(後面我們會講到記憶體逃逸)
package main變數、指標和位址三者的關係是,每個變數都擁有位址,指標的值就是位址當使用import "fmt"
func main()
//在c語言裡面,我們在方法裡定義了乙個變數city,如果函式執行完了,是會釋放掉這個變數。
//那麼就會返回乙個空指標回去!
//但是在go裡面,讓不會返回空指標,他會儲存這個變數將棧上的指標進行返回(沒用東西都是放到棧上)
func test() *string
&
操作符對普通變數進行取位址操作並得到變數的指標後,可以對指標使用*
操作符,也就是指標取值
func main()3.3:空指標
指標變數 指標強制型別轉換
一 什麼是指標變數?指標變數,實質上是乙個變數,只是它是存放位址的變數,指標的型別代表的是它所指向的變數的型別,因此就有了指向整形 字元型 浮點型等其他型別的指標。但實際上所有型別的指標變數存放的都是int型的位址 16位的編譯系統,int是2位元組 32的編譯系統,int是4位元組 本質上,不同型...
Object C 指標變數強制型別轉換
除了id型別外,指標變數只能呼叫它編譯時型別的方法。而不能呼叫它執行時型別的方法,即使它實際所指向的物件包含該方法。如果需要讓這個指標變數呼叫執行時型別的方法,就需要強制型別轉換。import intmain intargc,const char argv return0 2014 11 29 15...
指標型別與動態變數
一 概念 指標型別 指示記憶體位址的資料型別 指標變數 存放記憶體位址的變數 簡稱 指標 二 指標變數的定義 1.格式 指標的型別 變數名 是指標說明符 如 int p int a 100 char s 2.結構體指標 如 struct node p 三 指標運算子 2個 1.取位址 後是普通變數 ...