go语言学习基础语法

下面是一段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是只连续输出,并在后面加换行,没有格式化字符串功能。
        }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值