Go語言基礎

package main

import (
	"fmt"
)
func main(){
	/*變量申明賦值*/
	//第一種賦值方式
	var name string
	name="panda"
	//第二種賦值方式
	var name2 = "mike"
	//第三種賦值方式
	name3:="jack"
	fmt.Println("hello,world!"+name+name2+name3)

	/*if*/
	//if 布爾表達式 {
	//	/* 在布爾表達式爲 true 時執行 */
	//}
	var age=10
	if age>18{
		fmt.Println("do something")
	}else{
		fmt.Println("not to do something")
	}
	//if statement; condition {
	//}
	//效果等同於上面,在if條件語句執行前會先執行前面的語句
	if age1:=10;age1>18{
		fmt.Println("do something")
	}else{
		fmt.Println("not to do something")
	}

	/*循環語句*/
	//for init; condition; post {
	//
	//}
	//init: 一般爲賦值表達式,給控制變量賦初值;
	//condition: 關係表達式或邏輯表達式,循環控制條件;
	//post: 一般爲賦值表達式,給控制變量增量或減量。
	for a:=1;a<10 ;a++  {
		fmt.Println("a=",a)
	}
	//for condition { }
	//跟while一樣
	//for true {
	//	fmt.Println("hello")
	//}
	//for { }
	//死循環,等同於while(true)
	//for{
	//	fmt.Println("hello")
	//}

	/*新建類實例*/
	//new Instance no.1
	person:=new(Person)
	fmt.Println(person.age)
	//new Instance no.2
	person1:=&Person{}
	fmt.Println(person1)
	//new Instance no.3 必須按照字段順序賦值
	person2:=&Person{name:"panda",age:12,height:1.1}
	fmt.Printf("name:%s,age:%d",person2.name,person2.age)

	/*數組*/
	//var variable_name [SIZE] variable_type
	var array[10] string
	array[0]="go"
	array[1]="java"
	array[2]="c++"
	//申明時初始化var variable_name = [SIZE]variable_type {value1, value2 ...}
	var array1=[5]string{"go","java","c++"}
	fmt.Println(array1[0])
	/*數組遍歷*/
	//普通for遍歷
	for i:=0;i<5;i++{
		fmt.Printf("array[%d]=%s \n",i,array[i])
	}
	//特有遍歷,功能同上,注意遍歷條件中只有一個逗號
	for index, value := range array {
		fmt.Printf("index = %d,value = %s \n",index, value)
	}

	//切片(動態數組),申明數組時無需制定長度
	var array2 []int64
	//切片初始化
	array2=make([]int64,10)
	//往切片中添加元素
	array2=append(array2,1)
	array2=append(array2,2)
	//創建一個切片,並進行截取
	numbers:=[]int{0,1,2,3,4,5,6,7,8,9}
	fmt.Println(numbers[1:4])
	fmt.Println(numbers[:3])
	fmt.Println(numbers[2:])
	printSlice(numbers[1:4])
	sum:=0
	for _,num:=range numbers{
		sum+=num
	}
	fmt.Println(sum)

	/*map*/
	/* 聲明變量,默認 map 是 nil */
	//var map_variable map[key_data_type]value_data_type
	//map_variable := make(map[key_data_type]value_data_type)
	//第一種
	// var dataMap map[string] string
	//dataMap=make(map[string]string)
	//第二種
	//var dataMap=make(map[string]string)
	//第三種
	dataMap:=make(map[string]string)
	dataMap["jack"]="fool"
	//第四種
	kvs:=map[string]string{"a":"apple","b":"banana"}
	for k,v :=range kvs{
		fmt.Printf("%s->%s \n",k,v)
	}
	dataMap["jack"]="smart"
	mapValue:=dataMap["jack"]
	fmt.Println(mapValue)
	delete(dataMap,"jack")

	/*defer語句*/
	//主調函數退出時執行,無論是否出現異常,相當於finally語句塊
	for i:=0;i<5;i++ {
		defer fmt.Println(i)
	}

}


func printSlice(x []int){
	fmt.Printf("len:%d slice=%v",len(x),x)
}
func max(a int32,b int32) int32{
	if a>b {
		return a
	}else{
		return b
	}
}
/*多返回值*/
func getMaxAndMin(a int32,b int32) (int32,int32){
	if a>b {
		return a,b
	}else{
		return b,a
	}
}

type Person struct{
	name string
	age uint32
	birth string
	height float32
	weight float32
}
func (p *Person) GetAge() uint32{
	return p.age
}
func (p *Person) GetName() string{
	return p.name
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章