下面是一段go语言基础语法学习代码,整理的:
package main //每个go程序的入口,必须有main
//import的每个目录下只能有一个package包
//同一个文件夹下的文件只能有一个包名,否则编译报错。
import (
"fmt"
"./my" //这里是导入当前目录下my目录下的包./表示当前路径。
"../cdiv" //这里是用..表示上级目录下的cdiv
)
const gNum=5 //这里用const 变量名是表示一个常量。
const ( //常量可以枚举,表示有多个常量
OP_ADD=iota //iota是特殊常量,从0开始,每下面一个+1.
MAXLEN=100 //iota加1,相当于iota=1
OP_DEL=iota //iota=2
MAXAGE=80
PI=3.1415
CITY="北京"
OP_EDIT=iota //所以这里iota是6
)
func nnCF(num int) { //for循环打印乘法表,有一个临时参数int变量num,表示每次要循环打印的末尾数字
for i:=1;i<num;i++ {
for j:=1;j<=i;j++ {
fmt.Printf("%d*%d=%2d ",j,i,j*i) //每打印一个算式,中间就空格下。用Printf函数可以格式化
}
fmt.Println("") //Println函数是会打印完自动换行。
}
}
func swap(a,b *int){//交换两个变量的值,用指针传递,指针变量类型是:*类型名
t:=*a //声明一个临时变量t,等于指针变量a所指向的内容
*a=*b
*b=t
}
type Circle struct { //这是声明的结构体
radius float32 //里面有一个radius成员
}
func (c Circle) getArea() float32 { //这是go语言中的方法,表示为某个类型调用,类似于c++类的成员函数。这里是Circle结构体类型的方法,getArea来计算面积,并返回一个浮点数。
return PI*c.radius*c.radius
}
func out2ary(ary [][]int,row int,colm int) {//二维数组做参数,格式:数组名 [行数][列数] 数组类型,打印出二维数组的每个元素值。
for i:=0;i<row;i++ {
for j:=0;j<colm;j++ {
fmt.Printf("ary[%d][%d]=%d ",i,j,ary[i][j])
}
fmt.Println("")
}
}
func getaverage(ary []int) float32 { //计算一维数组的平均值,
var sum,num =0,len(ary) //len函数计算数组的长度
for i:=0;i<num;i++ {
sum+=ary[i]
}
return float32(sum)/float32(num)
}
func main() {
var intary =[][]int{{0,0}, {1,2}, {2,4}, {3,6},{4,8}} //定义了一个二维数组
out2ary(intary,5,2)
var inta =[]int{50,6,11,8,9} //定义了一个一维数组
fmt.Println("数组平均值:",getaverage(inta))
var c1 Circle
c1.radius=5 //结构体成员赋值
fmt.Println("圆的面积:",c1.getArea())//调用Circle结构体里的方法
nnCF(5)
fmt.Println(MAXLEN,MAXAGE,PI,CITY,OP_ADD,OP_DEL,OP_EDIT)
var strhead ="hello"
var tNum int=6
tNum++
var a,b=10,0
var ptr1 *int=&a //声明了一个整形指针变量*int
ptr2 :=&b //这种不带var声明格式的只能在函数体中出现
fmt.Println("a地址:",ptr1," 内容:",*ptr1," b地址:",ptr2," 内容:",b)
swap(ptr1,ptr2)
fmt.Println("a地址:",ptr1," 内容:",*ptr1," b地址:",ptr2," 内容:",b)
bCf:=false
fmt.Printf("gNum=%d,tNum=%d,%s,请输入两个数a,b:\n",gNum,tNum,strhead)
fmt.Scanf("%d,%d",&a,&b)
//在./my目录下有mathClass这个package,下面有2个函数Add和Sub
fmt.Printf("%d+%d=%d\n",a,b,mathClass.Add(a,b)) //Printf用于需要格式化字符串的场景。
fmt.Printf("%d-%d=%d\n",a,b,mathClass.Sub(a,b))
if(!bCf){
//在../cdiv目录下有cdClass这个package,下面有个函数Cf
fmt.Println("调用CF函数","=",cdClass.Cf(a,b)) //Println是只连续输出,并在后面加换行,没有格式化字符串功能。
}
}