Go學習筆記day01-變量類型,關鍵字及一些語法特性

一.var 語句用於聲明一個變量列表,跟函數的參數列表一樣,類型在最後。

   變量聲明可以包含初始值,每個變量對應一個。

  如果初始化值已存在,則可以省略類型;變量會從初始值中獲得類型。

//變量
var x int, y int   
等同=>  
var x, y int  

//函數
func add(x int, y int) int {
	return x + y
}
等同
func add(x, y int) int {
	return x + y
}



//初始值    如有初始值,可以省略類型
var x, y = 1, 3



//在函數中,簡潔賦值語句 := 可在類型明確的地方代替 var 聲明,
//:= 結構不能在函數外使用
//函數我必須用var聲明
func add() {
	var x,y=1,3
}
等同
func add() {
	x,y:=1,3
}

二.基本類型

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的別名

rune // int32 的別名
    // 表示一個 Unicode 碼點

float32 float64

complex64 complex128

附:int和uint區別: 有符號的整數類型int和無符號的整數類型uint

有符號整型int

分爲int8、int16、int32、int64

數據類型 佔用字節 數據範圍 對比C語言
int8 1 -128~127 char
int16 2 -32768~32767 short
int32 4 -2147483648~2147483647(21億) long
int64 8 -9223372036854775808~9223372036854775807 比C最大要大

無符號整型uint

分爲uint8、uint16、uint32、uint64

數據類型 佔用字節 數據範圍 對比C語言
uint8(byte) 1 0~255  
uint16 2 0~65535  
uint32 4 0~4294967295(42億) unsigned long
uint64 8 0~18446744073709551615  


三.關鍵字

3.1 for

//for循環
for i := 0; i < 10; i++ {
		sum += i
}
//等同
sum := 1
for ; sum < 1000; {
		sum += sum
}

//for 是 Go 中的 “while”
sum := 1
for sum < 1000 {
		sum += sum
}

//無限循環   省略循環條件,該循環就不會結束
for {
}

3.2 if

//if
if x < 0 {
		
}else{

}

3.3 switch

Go 只運行選定的 case,而非之後所有的 case。 實際上,Go 自動提供了在這些語言中每個 case 後面所需的 break 語句

3.4 defer 語句會將函數推遲到外層函數返回之後執行。

//例一
package main

import "fmt"

func main() {
	defer fmt.Println("world")

	fmt.Println("hello")
}

//輸出
hello
world


//例二
//defer 棧  推遲的函數調用會被壓入一個棧中。當外層函數返回時,被推遲的函數會按照後進先出的順序調用。
package main

import "fmt"

func main() {
	fmt.Println("counting")

	for i := 0; i < 10; i++ {
		defer fmt.Println(i)
	}

	fmt.Println("done")
}
//輸出
counting
done
9
8
7
6
5
4
3
2
1
0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章