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