由浅到深认识Go语言(4):常量&运算符

该文章Github地址:https://github.com/AntonyCheng/go-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】& CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Go语言(3):数据类型

4.常量

常量的定义

常量,顾名思义在程序运行期间不可以改变的量;

基本格式

const 常量名 数据类型 = 常量值

示例如下:

package main

import "fmt"

func main() {
   const PI float64 = 3.14
   fmt.Printf("%.2f", PI)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常量命名规范

  • 只能由数字,字母和下划线组成;
  • 不能以数字开头;
  • 常量命名规范通常是使用全大写,单词与单词之间使用 _ 隔离开;
  • 不能是关键字;
  • 见名知意

常量注意事项

  • 不允许修改常量的值
  • 不允许打印常量的地址

字面常量

所谓字面常量(literal),指的是程序中硬编码的常量,例如:

123
3.1415
true
"foo"

iota枚举

常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。

注意:在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。

具体使用方式如下:

package main

import "fmt"

func main() {
   //1、iota常量自动生成器,每个一行,自动累加1
   //2、iota用于常量赋值
   const (
      a = iota
      b = iota
      c = iota
   )
   fmt.Println("line1 =", a, b, c)
   //3、iota遇到const,会被重置为0
   const d = iota
   fmt.Println("line2 =", d)
   //4、可以只写一个iota
   const (
      e = iota
      f
      g
   )
   fmt.Println("line3 =", e, f, g)
   //5、如果是同一行,值都一样
   const (
      h       = iota
      i, j, k = iota, iota, iota
      l       = iota
   )
   fmt.Println("line4 =", h, i, j, k, l)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.运算符

5.1.算术运算符

运算符术语示例结果
+10 + 515
-10 - 55
*10 * 550
/10 / 52
%取模(取余)10 % 31
++后自增,没有前自增a=0; a++a=1
后自减,没有前自减a=2; a–a=1

示例如下:

package main

import "fmt"

func main() {
   var a int = 10
   var b int = 3
   fmt.Printf("a + b = %d\n", a+b)
   fmt.Printf("a - b = %d\n", a-b)
   fmt.Printf("a * b = %d\n", a*b)
   fmt.Printf("a / b = %d\n", a/b)
   fmt.Printf("a %% b = %d\n", a%b)
   a++
   fmt.Printf("a++ = %d\n", a)
   b--
   fmt.Printf("b-- = %d\n", b)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意

  • 除法算数运算符除数不能为0
  • 取余算术运算符除数不能为0
  • Go语言中自增自减只有 a++ 或者 a-- 的形式

算术运算符案例一

输入半径,计算圆的面积和周长,并且打印出来(PI为3.14);

package main

import "fmt"

func main() {
   const PI float64 = 3.14
   num := 0.0
   fmt.Println("请输入圆的半径:")
   fmt.Scan(&num)
   fmt.Printf("计算的结果如下:\n半径为 %f\n面积为 %f\n周长为 %f\n", num, PI*num*num, 2*PI*num)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算术运算符案例二

某学生三门课成绩为:语文 90 、数学 89 、英语 69 ,编程求总分和平均分;

package main

import "fmt"

func main() {
   chinese := 90
   mathematics := 89
   english := 69
   fmt.Printf("该学生语文成绩为%d,数学成绩为%d,英语成绩为%d\n", chinese, mathematics, english)
   fmt.Printf("该学生总分为%.2f\n", float64(chinese+mathematics+english))
   fmt.Printf("该学生平均分为%.2f\n", float64(chinese+mathematics+english)/3)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算术运算符案例三

问题1:某商店T恤(T-shirt)的价格为35元/件,裤子(trousers)的价格为120元/条。

小明在该店买了3件T恤和2条裤子并且打8.8折。请计算并显示小明应该付多少钱?

问题2:如上题中打完8.8折后出现小数商店为了结算方便,只收用户整数部分的钱,如本应收用户303.6,现在只收用户303元,应该如何做?

package main

import "fmt"

func main() {
   tShirt := 35.0
   trousers := 120.0
   cost := 0.88
   fmt.Println("T恤价值35元,裤子价值120元,折扣是8.8折")
   fmt.Printf("小明买了3件T恤和2条裤子,一共花费:%.2f元\n", (3*tShirt+2*trousers)*cost)
   fmt.Printf("商店只收取整数部分,即收取%d元\n", int((3*tShirt+2*trousers)*cost))
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.2.赋值运算符

关于赋值运算符前面我们已经使用过多次,赋值运算符 = ,

varint num=9;num=num+1; 这里的=号是赋值运算符,不是数学义意上的相等.

常见的赋值运算符如下,前面我们使用的=是普通赋值,+=,-=等我们称为“复合赋值运算符”

运算符说明示例
=普通赋值c = a + b 将 a + b 表达式结果赋值给 c
+=相加后再赋值c += a 等价于 c = c + a
-=相减后再赋值c -= a 等价于 c = c - a
*=相乘后再赋值c *= a 等价于 c = c * a
/=相除后再赋值c /= a 等价于 c = c / a
%=求余后再赋值c %= a 等价于 c = c % a

5.3.关系运算符

运算符术语示例结果
==相等于4 == 3false
!=不等于4 != 3true
<小于4 < 3false
>大于4 > 3true
<=小于等于4 <= 3false
>=大于等于4 >= 1true

5.4.逻辑运算符

运算符术语示例结果
!!a如果a为假,则!a为真;
如果a为真,则!a为假。
&&a && b如果a和b都为真,则结果为真,否则为假。
||a || b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

逻辑运算符案例一

让用户输入老王的语文和数学成绩,输出以下判断是否正确,正确输出True,错误输出False;

老王的语文和数学成绩都大于90分;

语文和数学有一门是大于90分的;

package main

import "fmt"

func main() {
   chinese := 0.0
   mathematics := 0.0
   fmt.Println("请输入老王的语文成绩:")
   fmt.Scan(&chinese)
   fmt.Println("请输入老王的数学成绩:")
   fmt.Scan(&mathematics)
   fmt.Printf("老王的语文和数学成绩都大于90分,结论:%t\n", chinese > 90 && mathematics > 90)
   fmt.Printf("语文和数学有一门是大于90分的,结论:%t\n", chinese > 90 || mathematics > 90)
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

逻辑运算符案例二

让用户输入一个年份,如果是闰年,则输出 true,如果不是闰年,则输出 false;

package main

import "fmt"

func main() {
   year := 0
   fmt.Println("请你输入一个年份:")
   fmt.Scan(&year)
   fmt.Printf("这一年是闰年么?结论:%t\n", (year%400 == 0) || (year%4 == 0 && year%100 != 0))
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一章:由浅到深认识Go语言(5):控制流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值