二、变量、基本数据类型、常量、运算符

1.变量

package main

import "fmt"

func main() {
	fmt.Println("定义变量")
	var a int = 10 //定义一个变量a同时将整数10赋值给a
	var b, c int   //定义完变量b,c后,再对其赋值
	b = 20
	c = 30
	fmt.Println("a =", a)
	fmt.Println("b =", b)
	fmt.Println("c =", c)
	fmt.Println(a, b, c)

	fmt.Println("自动推导类型")
	num := 100 //自动推导类型
	fmt.Println(num)
	x, y, z := 1, 2, 3 //一次使用自动推导的方式,给多个变量赋值
	fmt.Println(x, y, z)

	fmt.Println("匿名变量")
	//_匿名变量配合函数返回值使用才有价值,目前大家只需要知道其语法
	_, i, _, j := 1, 2, 3, 4 //匿名变量
	fmt.Println(i, j)        //2 4

	fmt.Println("交换两个变量的值")
	h, k := 666, 888
	fmt.Println(h, k) //666 888
	h, k = k, h       //交换两个变量的值
	fmt.Println(h, k) //888 666

	fmt.Println("格式化输出")                        //%d表示输出的是一个整数
	fmt.Printf("a=%d, b=%d, c=%d\n", a, b, c)   //a=10, b=20, c=30
	fmt.Println("a =", a, ",b =", b, ",c =", c) //a = 10 ,b = 20 ,c = 30

	fmt.Println("接收输入")
	fmt.Println("请输入您的姓名:")
	var name string
	fmt.Scan(&name)
	fmt.Println("您好:【", name, "】先生!")
}
  • 输出结果:
定义变量
a = 10
b = 20
c = 30
10 20 30
自动推导类型
100
1 2 3
匿名变量
2 4
交换两个变量的值
666 888
888 666
格式化输出
a=10, b=20, c=30
a = 10 ,b = 20 ,c = 30
接收输入
请输入您的姓名:
张胜鸿
您好:【 张胜鸿 】先生!

2.基本数据类型

类型名称长度默认值说明
bool布尔类型1false其值不为真即为假,不可以用数字代表true或false
byte字节型10uint8别名
rune字符类型40专用于存储unicode编码,等价于uint32
int,uint整型4或80有符号32位或无符号64位
int8整型10-128 ~ 127
uint8整型100 ~ 255
int16整型20-32768 ~ 32767
uint16整型200 ~ 65535
int32整型40-2147483648 到 2147483647
uint32整型400 到 4294967295(42亿)
int64整型80-9223372036854775808到 9223372036854775807
uint64整型800 到 18446744073709551615(1844京)
float32浮点型40.0小数位精确到7位
float64浮点型80.0小数位精确到15位
complex64复数类型8\\
complex128复数类型16\64 位实数和虚数
uintptr整型4或8\以存储指针的uint32或uint64整数
string字符串\“”utf-8字符串
常用数据类型
package main

import "fmt"

func main() {
	var b bool = true
	fmt.Printf("b=%t\n", b) //布尔类型

	var f float32 = 3.1415  //浮点型
	fmt.Printf("f=%f\n", f) //f=3.141500
	fmt.Println("f =", f)   //f = 3.1415

	var c byte = 'c'
	fmt.Printf("c=%c\n", c) //字符类型
	fmt.Printf("c=%d\n", c)

	var s string = "abc"
	fmt.Printf("s=%s\n", s) //字符串类型
	fmt.Println(len(s))     //3
	fmt.Printf("%c", s[1])  //b
}
  • 输出结果:
b=true
f=3.141500
f = 3.1415
c=c
c=99
s=abc
3
b
fmt包的格式化输出输入
格式含义
%%一个%字面量
%b一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数
%c字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%d一个十进制数值(基数为10)
%e以科学记数法e表示的浮点数或者复数值
%E以科学记数法E表示的浮点数或者复数值
%f以标准记数法表示的浮点数或者复数值
%g以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%G以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%o一个以八进制表示的数字(基数为8)
%p以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示
%q使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0‘结尾,这个’\0’即空字符)
%t以true或者false输出的布尔值
%T使用Go语法输出的值的类型
%U一个用Unicode表示法表示的整型码点,默认值为4个数字字符
%v使用默认格式输出的内置或者自定义类型的值,或者是使用其类型的String()方式输出的自定义值,如果该方法存在的话
%x以十六进制表示的整型值(基数为十六),数字a-f使用小写表示
%X以十六进制表示的整型值(基数为十六),数字A-F使用小写表示

3.常量

package main

import "fmt"

func main() {
	const a int = 10
	//a = 20  //err,常量不允许修改
	fmt.Println(a)

    //自动推导类型
	const b = 11.2 //没有使用:=
	fmt.Println(b)
}
枚举
  • 常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。
  • 注意:在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。
package main

import "fmt"

func main() {
	//1、iota常量自动生成器,每个一行,自动累加1
	//2、iota给常量赋值使用
	const (
		a = iota //0
		b = iota //1
		c = iota //2
	)
	fmt.Println(a, b, c) //0 1 2

	//3、iota遇到const重置为0
	const d = iota
	fmt.Println(d) //0

	//4、可以只写一个iota
	const (
		a1 = iota //0
		b1
		c1
	)
	fmt.Println(a1, b1, c1) //0 1 2

	//5、如果是同一行,值都一样
	const (
		x          = iota
		y1, y2, y3 = iota, iota, iota
		z          = iota
	)
	fmt.Println(x, y1, y2, y3, z) //0 1 1 1 2
}

4.运算符

4.1算术运算符
  • 注意:GO语言中没有前自增,这是与其它编程语言不同的地方。
运算符术语示例结果
+10 + 515
-10 - 55
*10 * 550
/10 / 52
%取模(取余)10 % 31
++后自增,没有前自增a=0; a++a=1
后自减,没有前自减a=2; a–a=1
4.2类型转换
  • Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间
  • 强制类型转换的语法格式:数据类型名(待转换的值)
package main

import "fmt"

func main() {
	var chinese int = 90
	var math int = 80
	var english = 67
	//总分是:237,平均分是:79
	fmt.Printf("总分是:%d,平均分是:%d\n", chinese+math+english, (chinese+math+english)/3)

	english = 69
	//总分是:239,平均分是:79
	fmt.Printf("总分是:%d,平均分是:%d\n", chinese+math+english, (chinese+math+english)/3)
	//总分是:239,平均分是:79.666667
	fmt.Printf("总分是:%d,平均分是:%f\n", chinese+math+english, float64(chinese+math+english)/3)
}
4.3赋值运算符
运算符说明示例
=普通赋值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
4.4关系运算符
运算符术语示例结果
==相等于4 == 3false
!=不等于4 != 3true
<小于4 < 3false
>大于4 > 3true
<=小于等于4 <= 3false
>=大于等于4 >= 1true
4.5逻辑运算符
运算符术语示例结果
!!a如果a为假,则!a为真;如果a为真,则!a为假。
&&a && b如果a和b都为真,则结果为真,否则为假。
||a || b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。
4.6其他运算符
运算符术语示例说明
&取地址运算符&a变量a的地址
*取值运算符*a指针变量a所指向内存的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值