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
}
Go語言基礎
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.