当前位置: 首页 > article >正文

Go语言学习代码记录

一、demo01

package main
import "fmt"

//func函数外的变量叫全局变量
var g7 = 100
var g8 = 9.7
//设计者认为上面的全局变量的写法泰麻烦了,可以一次性声明
var(
    g10 = 500
    g11 = "jackchen"
)

func main(){
//func定义的函数中的变量叫局部变量

//1、变量的声明
var age int
//2、变量的赋值
age = 18
//3、变量的使用
fmt.Println("age =",age)
//4、变量和赋值一句
var age2 int = 19
fmt.Println("age2 =",age2)

fmt.Println("------------- 变量的4中表现形式 --------------")
//第一种
var num int = 18
fmt.Println("变量的第一种变形输出:",num)
//第二种,int类型未赋值的情况下,默认值为 0
var num2 int
fmt.Println("变量的第二种变形输出:",num2)
//第三种,如果没有写变量的类型,那么根据"="后面的值进行判定变量的类型(自动类型推断)
var num3="tom"
fmt.Println("变量的第三种变形输出:",num3)
//第四种,省略var,注意使用:= 
sex := "男"
fmt.Println("变量的第四种变形输出:",sex)

fmt.Println("------------- 支持一次性声明多个变量(多变量声明) --------------")
var n1,n2,n3 int
fmt.Println(n1,n2,n3)

var n7,name,n8 = 10,"jack",7.8
fmt.Println(n7,name,n8)

n9,height := 6.9,100.6
fmt.Println(n9,height)

fmt.Println("------------- 函数内打印全局变量 --------------")
fmt.Println(g7,g8,g10,g11)
}

二、demo02

package main
import "fmt"

func main(){
//+加号:
//1.正数 2.相加操作 3.字符串拼接
var n3 int = -10
fmt.Println(n3)
var n1 int = +10
fmt.Println(n1)
var n2 int = 4 + 7
fmt.Println(n2)
var s1 string = "abc" + "def"
fmt.Println(s1)

//除号:
fmt.Println(10/3) //两个int类型数据运算,结果一定为整数类型
fmt.Println(10.0/3) //浮点类型参与计算,结果为浮点类型

//%取模 等价公式:  a%b=a-a/b*b
fmt.Println(10%3)  //10%3 = 10-10/3*3 = 1
fmt.Println("10-10/3*3 =",10-10/3*3)
fmt.Println(-10%3)
fmt.Println(10%-3)
fmt.Println(-10%-3)

//++自增操作:
/*
go语言里,++--操作非常简单,只能单独使用,不能参与到运算中去。
++--只能在变量的后面,不能写在变量的前面,--a ,++a 语法是错误的。
*/
var a1 int = 10 
a1++
fmt.Println("a1++= ",a1)
a1--
fmt.Println("a1--= ",a1)

//赋值运算符:
var num1 int = 10
fmt.Println(num1)
var num2 int = (10+20)%3+3-7  //=右侧的值运算符清楚后,再赋值给=的左侧
fmt.Println(num2)
var num3 int = 10
num3 = num3 + 20
fmt.Println("num3 = num3 + 20= ",num3)
num3 -=20
fmt.Println("num3 -=20= ",num3)

//联系:交换两个数的值并输出结果
var a int = 8
var b int = 4
fmt.Println("a = %v,b = %v",a,b)
fmt.Println("%v表示输出时会添加字段名")
//交换:
//引入一个中间变量
var t int
t = a
a = b
b = t
fmt.Println("a = %v,b = %v",a,b)

//关系运算符:
fmt.Println(5==9) //判断左右两侧的值是否相等,相等返回true,不相等返回的是false
fmt.Println(5!=9) //判断不等于
fmt.Println(5>9)
fmt.Println(5<9)
fmt.Println(5>=9)
fmt.Println(5<=9)

//逻辑运算符:
/*
与逻辑:&& 两个数值/表达式只要有一侧是false,结果一定为false
也叫短路与:只要第一个数值/表达式的结果是false,那么后面的表达式等就不用运算了,直接结果就是false
*/
fmt.Println(true&&true)
fmt.Println(true&&false)
fmt.Println(false&&true)
fmt.Println(false&&false)
/*
或逻辑:&& 两个数值/表达式只要有一侧是true,结果一定为true
也叫短路或:只要第一个数值/表达式的结果是true,那么后面的表达式等就不用运算了,直接结果就是true,-->提高运算效率
*/
fmt.Println(true||true)
fmt.Println(true||false)
fmt.Println(false||true)
fmt.Println(false||false)
/*
非逻辑,取相反的结果
*/
fmt.Println(!true)
fmt.Println(!false)

//其它运算符
/*
&取内存地址
指针就是内存地址
&age_addr 表示获取存储空间的指针地址
*/
var age_addr int = 18
fmt.Println("age对应的存储空间的地址为:",&age_addr)
/*
*int  表示ptr 指针int的类型
*ptr  变量前加* 表示打印指针的空间所保存的值
* 取指针变量对应的数值
*/
var ptr *int = &age_addr
fmt.Println(ptr)
fmt.Println("ptr这个指针指向的具体数值为:",*ptr)

}

三、demo03

package main
import "fmt"
func main(){
  //实现功能:如果口罩的库存小于30个,提示:库存不足
  var count int = 100
  //单分支:
  /*
   if后面表达式,返回结构一定是true或者false
   如果返回结果为true的话,那么{}中的代码就会执行
   如果返回结果为false的话,那么{}中的代码就不会执行 
   golang里面,if后面可以并列的加入变量的定义:
  */
  if count < 30 {
  fmt.Println("对不起,口罩存量不足")
  }
 /*
   golang里面,if后面可以并列的加入变量的定义:
   num:=30   省略var ,并且根据:=后的值,推导出数据类型
   用分号来分割定义的变量与表达式
 */
  if num:=30;num < 30{
	fmt.Println("对不起,口罩存量不足")
  }

  /*
   双分支
   实现功能:如果口罩的库存小于30个,提示:库存不足,否则提示:库存充足
   定义 口罩的数量:
  */
  var count01 int = 20
  if count01 < 30 {
	fmt.Println("库存不足")
  } else {
    fmt.Println("库存充足")
  }

  /*
  多分支
  实现功能:根据给出的学生分数,判断学生的等级:
  >= 90  -----A
  >= 80  -----B
  >= 70  -----C
  >= 60  -----D
  如果用多个if 需要 使用与 or 或逻辑,因为多个if分支都会执行一次
  如果用多分支,有点:如果已经走了一个分支了,那么下面的分支就不会再去判断执行了。
*/
  var score int = 80
  if score >= 90 {
    fmt.Println("您的成绩为A级别")
  } else if score >= 80 {
    fmt.Println("您的成绩为B级别")
  } else if score >= 70 {
    fmt.Println("您的成绩为C级别")
  } else if score >= 60 {
    fmt.Println("您的成绩为D级别")
  } else {
    fmt.Println("您的成绩不及格")
}

  /*
   使用switch语句实现根据学生的分数,判断学生的等级
  >= 90  -----A
  >= 80  -----B
  >= 70  -----C
  >= 60  -----D
  fallthrough 语句,会在某一个case语句执行后,下一个接邻的case也会执行,但是后面的将不会执行,除非接邻的case中也包含了fallthrough语句
  java中的break是必须要写,但是fallthrough可写,可不写
  */
  var st_score int = 40
  switch st_score/10 {
  case 10:
	  fmt.Println("您的成绩为A级别")
	  fallthrough
  case 9:
	  fmt.Println("您的成绩为B级别")
	  fallthrough
  case 8:
	  fmt.Println("您的成绩为C级别")
	  fallthrough
  case 7,6,5,4:
	  fmt.Println("您的成绩为D级别")
	  fallthrough
  default:
	  var st int = 25
	  var result int
	  result = st/10
	  //整数相除,一定是整数
	  fmt.Println("整数相除,一定是整数: ",result)
	  fmt.Println("您的成绩不及格")
  }

  /*
  实现一个功能:求和:1+2+3+4+5:
  for循环中不能使用var 定义变量,可以使用:=进行初始化
  初始化只执行一次
  执行过程:先进行初始化=》进行判断=》执行循环体=》执行迭代因子i++=》进行判断=》执行循环体
  */
   var sum int = 0
   
   for i:= 1;i<=5;i++ {
	sum+=i;
   }
   fmt.Println(sum)

  /*
  求和,定义一个变量,用来接收这个和
*/
  var str string = "hello golang你好"
  /*
  方式1:普通for循环:
  无法输出您好,因为存在三位定义一个汉字
*/
for i:=0;i<=len(str);i++ {
//i理解为字符串的下标
   fmt.Println("%c \n",str[i])
}
 /*
 方式2: for range
 i 表示索引值
 value 表示索引的值
 可以输出汉字
 对str进行遍历,遍历的每个结果的索引值被i接收,每个结果的具体数值被value接收
 遍历对字符进行遍历
*/
for i,value:=range str{
    fmt.Println("索引为:%d,具体的值为%c :",i,value)

}

}





http://www.kler.cn/news/343394.html

相关文章:

  • C++继承深度剖析:从理论到实践的跨越
  • rzszscp端对端文件传输整理
  • 【SpringSecurity】基本流程
  • 职场上的人情世故你知多少
  • VARCHAR(50) 与 CHAR(50) 的区别
  • 活动预告|博睿数据将受邀出席GOPS全球运维大会上海站!
  • KVM虚拟化技术
  • 启动hadoop后没有 NodeManager和 ResourceManager
  • Spring Boot RESTful API开发教程
  • 滚柱导轨适配技巧与注意事项!
  • linux线程 | 线程的控制
  • 关于mac下的nvm设置淘宝镜像源
  • 文件与目录的基本操作
  • 无人机侦测:手提式无线电侦测设备技术详解
  • HCIA综合实验
  • 数据仓库分层理论
  • linux安装Go ImageMagick插件
  • Java中的流:高效处理数据的新方式
  • SciPy的详细学习要点
  • 【自定义网络协议】Java基于Vert.x的自定义TCP协议实现