快速入門GO語言之Lesson00-基礎語法

**

快速入門GO語言之Lesson00-基礎語法

**
一、基本常識
1、go語言只有一個入口函數main,一個文件夾代表一個工程,每個工程只能有一個main
2、打印,Println()會自動換行
3、調用函數,大部分都需要導入包
4、go語言以包作爲管理單位,每個文件必須先聲明包
5、程序必須要一個main包
6、go語言每一行的結尾沒有“;”結尾

二、cmd命令
1、go build xxx.go //編譯go代碼,生成一個可執行程序,運行可執行程序xxx.exe
2、cls 清屏命令
3、go run xxx.go //不生成可執行文件,直接編譯運行

三、數據類型
1、數據類型的作用:告訴編譯器變量應該以多大的內存存儲
2、變量命名規範:
a、字母,數字,下劃線
b、不能以數字開頭
c、名字不能是關鍵字
d、大小寫區分

四、變量聲明
1、聲明格式:var 變量名 數據類型 //聲明的變量必須使用
2、沒有初始化的變量,默認值爲0
3、同一個函數內的變量聲明唯一,可以同時聲明多個同一類型的變量
4、自動推導類型,必須初始化通過初始化的值確定類型

五、練習代碼塊(1)

package main

import "fmt"

func main() { //左括號必須和函數放在同一行
	fmt.Println("Hello World!")

	var a int
	a = 10
	fmt.Println("a= ", a)

	var b int = 20
	fmt.Println("b= ", b)

	//自動推導類型
	c := 30
	fmt.Printf("c type is %T\n", c) //%T打印變量的數據類型

	e, f := 10, 20
	//傳統的方式交換兩個變量的值
	var temp int
	temp = e
	e = f
	f = temp

	//go語言交換兩個變量的值
	i, j := 10, 20
	i, j = j, i
	fmt.Printf("i = %d,j = %d\n", i, j)

	//匿名變量,丟棄數據不處理
	//匿名變量配合函數返回值使用纔有意義
	temp, _ = e, f
	fmt.Printf("temp= %d", temp)

}
// 運行結果
// Hello World!
// a=  10
// b=  20
// c type is int
// i = 20,j = 10

六、練習代碼塊(2)

package main

import "fmt"

func main() {
	//常量的使用
	//常量:程序運行區間,不可以改變的量 關鍵字const
	//變量:程序運行區間,可以改變的量
	const a int = 10
	//a = 20       報錯:常量不可修改
	const b = 10 //沒有":="
	fmt.Printf("b type is %T\n", b)

	//多個變量或常量的定義
	//不同類型變量的聲明(定義)
	var c int
	var d float64
	c, d = 10, 3.1415926
	fmt.Printf("c = %d,d = %f \n", c, d)

	//ctrl+/ 註釋和取消註釋快捷鍵

	//const i int = 10
	//const j float64 = 3.1415926

	const (
		i = 10
		j = 3.1415926
	)
	fmt.Printf("i = %d,j = %v\n", i, j)

}
// 運行結果
// b type is int
// c = 10,d = 3.141593 
// i = 10,j = 3.1415926

七、練習代碼塊(3)

package main

import "fmt"

func main() {
	//iota常量自動生成器,每個一行,自動累加一
	//iota給常量賦值使用

	const (
		a = iota //0
		b = iota //1
		c = iota //2
	)
	fmt.Printf("a= %d,b= %d,c= %d\n", a, b, c)

	//iota遇到const重置爲0
	const d = iota
	fmt.Printf("d = %d\n", d)

	//可以只寫一個iota
	const (
		a1 = iota //0
		b1        //1
		c1        //2
	)
	fmt.Printf("a1= %d,b1= %d,c1= %d\n", a1, b1, c1)

	//如果是同一行,值都一樣
	const (
		i          = iota
		j1, j2, j3 = iota, iota, iota
		k          = iota
	)
	fmt.Printf("i = %d,j1 = %d,j2 = %d,j3 = %d,k = %d\n", i, j1, j2, j3, k)

}

//運行結果
//a= 0,b= 1,c= 2
//d = 0
//a1= 0,b1= 1,c1= 2
//i = 0,j1 = 1,j2 = 1,j3 = 1,k = 2

八、練習代碼塊(4)

package main

import "fmt"

func main() {
	//bool類型
	//1、聲明變量
	var a bool
	a = true
	fmt.Println("a = ", a)
	//2、自動推導
	b := false
	fmt.Println("b = ", b)

	//浮點型
	//1、聲明變量
	var f1 float32
	f1 = 3.1415926
	fmt.Println("f1 = ", f1)

	var f2 float64
	f2 = 3.1415926
	fmt.Println("f2 = ", f2)

	//字符類型
	var ch byte
	ch = 97
	fmt.Printf("%c = %d\n", ch, ch) //格式化輸出,%c以字符串方式打印,%d以整型方式打印

	//大小寫轉化,加減32
	fmt.Printf("大寫:%d,小寫:%d\n", 'A', 'a')
	fmt.Printf("大寫轉小寫:%c\n", 'A'+32)
	fmt.Printf("小寫轉大寫:%c\n", 'a'-32)

	//字符串類型
	var str string
	str = "abc"
	fmt.Println("str = ", str)
	//自動推導類型
	str2 := "mike"
	fmt.Println("str2 = ", str2)
	//內建函數,len()返回字符串長度
	fmt.Println("str2 的長度: ", len(str2))

	//字符與字符串的區別,字符串都是隱藏了一個結束符
	//只有一個字符,轉義字符除外
	//一個或多個字符組成

	var str3 string
	str3 = "hello,world"
	fmt.Printf("str3 = %c%c%c%c%c\n", str3[0], str3[1], str3[2], str3[3], str3[4])

	//複數類型
	var t complex128
	t = 2.1 + 3.14i
	fmt.Println("t = ", t)
	//自動推導類型
	t2 := 3.3 + 2.2i
	fmt.Println("t2 = ", t2)

	//通過內建函數,取實部和虛部
	fmt.Println("real(t2) = ", real(t2), "imag(t2) = ", imag(t2))
}

//運行結果
// a =  true
// b =  false
// f1 =  3.1415925
// f2 =  3.1415926
// a = 97
// 大寫:65,小寫:97
// 大寫轉小寫:a
// 小寫轉大寫:A
// str =  abc
// str2 =  mike
// str2 的長度:  4
// str3 = hello
// t =  (2.1+3.14i)
// t2 =  (3.3+2.2i)
// real(t2) =  3.3 imag(t2) =  2.2

九、練習代碼塊(5)

package main

import "fmt"

func main() {
	//類型轉換
	var flag bool
	flag = true
	//bool類型不能轉換爲int,int 不能轉換爲bool,這種不能轉換類型成爲不兼容類型
	fmt.Printf("flag = %T\n", flag)

	var ch byte
	ch = 'a'
	var t int
	t = int(ch)
	fmt.Printf("t = %d\n", t)

	//類型別名 type
	type bigint int64 //給int64起別名爲bigint
	var a bigint
	fmt.Printf("a type is %T\n", a)

	type (
		long int64
		char byte
	)
	var b long
	b = 11
	var ch1 char
	ch1 = 'e'
	fmt.Printf("b = %d,ch1 = %c\n", b, ch1)

}

//運行結果
// flag = bool
// t = 97
// a type is main.bigint
// b = 11,ch1 = e

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