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