go基础语法(一)

一、变量定义与使用

  • 变量:在程序运行过程中其值能够改变的量 成为变量 变量存在内存中。

  • 变量定义格式:

//声明:	var 变量名 数据类型  
例:var a int

//定义: var 变量名 数据类型 = 值 
例:var a int = 10

//自动推导类型: 变量名:=值 
例:a : = 3.5

//变量的类型不同不能进行计算 需要使用类型转换
//匿名变量:用下划线代替
  • 格式化输入输出:
fmt.Println()//输出数据 自带换行
fmt.Print()//输出数据 不带换行
fmt.Printf()//格式化输出数据  %d 整型 %f 浮点型 %t 布尔类型 %s 字符串类型 %c 字符类型 %p 内存地址
fmt.Scan()输入数据  &变量  &取地址符号 空格或者回车作为接收结束
fmt.Scanf()//格式化输入数据,可以接收到空格
  • 标识符命名规则:
1、只能以字母或下划线开头
2、只能使用字母 数字 下划线
3、区分大小写
4、不能使用系统关键字
5、见名知义

二、运算符

%c 打印字符类型数据
%d 打印整型类型数据
%f 打印浮点型数据 fmt.printf("%f")  默认保留六位小数%.2f 保留两位小数 对第三位四舍五入
%s 打印字符串类型
%p 打印变量地址(指针类型)
%t 打印布尔类型数据
%T 打印数据类型  a:=3.14 float64 a:=10 int a:='a'int32

%o 打印八进制整型数据
%x %X 打印十六进制整型数据  a-f A-F
%%  打印一个%
  • 转义字符
'\n' 表示换行
'\\' 表示\ 
'\0' 表示字符串结束标志 ASCII值为0
  • 字符与字符串
    在go语言中,一个汉字算作三个字符,是为了和linux统一处理,在windows中一个汉字是两个字符。

  • 常量

//格式:一般常量大写字母
const 常量名 数据类型=值   
例:const PI float64 = 3.1415

常量的值在程序运行过程中其值不能发生改变
常在在内存中的数据区进行存储   变量是在内存中的栈区存储 
系统为每一个应用程序分配了1M的内存空间存储变量和函数的信息
  • 类型转换

①不同类型转换 如果将浮点型转成整型 会丢失精度 只会保留整数部分 不会四舍五入
②同一类型转换 建议将低类型转成高类型 防止数据丢失 【高位溢出】
③格式: 数据类型(变量) 数据类型(表达式)

  • iota 枚举
//枚举一般用作于程序的流程控制
const(
  a=iota //0
  b,c=iota,iota//1
  d=20//2
)
  • 运算符:
1、算数运算符
加【+】 减【-】乘【*】 除【/】  两个相同类型的数据相除是得到的结果类型也相同 除数不能为0
取余【%】  取余只能对整型操作   除数不能为0
自增【++】自减【--】 go语言中只有后自增后自减  不能参与表达式计算(二义性??)
赋值运算符:
加等于【+=】 减等于【-=】乘等于【*=】除等于【/=】取余等于【%=】

2、比较运算符:
【>】【<】【>=】【<=】【==】【!=】
比较运算符返回值为bool类型 true false

3、逻辑运算符:
非【!】非真为假 非假为真
或【||】同假为假 其余为真
与【&&】同真为真 其余为假

4、其他运算符:
取地址【&】  对变量去地址是指针类型
取值运【*】  对指针变量取值

5、单目运算符
逻辑非! 取地址& 取值* 自增++ 自减--

6、双目运算符
乘除 * / %
加减 + -
关系 == != > >= < <=
逻辑 || &&  注意 逻辑与高于逻辑或
赋值 = += -= *= /= %=

运算符优先级:
括号 () 结构体成员.  数组下标[]

三、条件语句

  • if()语句
   var a int = 10
   if a < 20 {
       fmt.Printf("a 小于 20\n" )
   }
   fmt.Printf("a 的值为 : %d\n", a)
  • if…else语句
	var age int
	fmt.Print("请输入您的年龄:")
	fmt.Scan(&age)
	if age>18 {
		fmt.Println("您可以进去")
	}else {
		fmt.Println("抱歉,您未满18岁!")
	}
  • if嵌套语句
	var a int = 100
	var b int = 200
	if a == 100 {
		if b == 200 {
			fmt.Printf("a 的值为 100 , b 的值为 200\n" );
		}
	}
	fmt.Printf("a 值为 : %d\n", a );
	fmt.Printf("b 值为 : %d\n", b );
  • switch语句
var grade int
		fmt.Print("请输入您的成绩:")
		fmt.Scan(&grade)
		switch (grade / 10 % 10) {
		case 9:
			fmt.Println("优秀")
		case 8:
			fmt.Println("良好")
		case 7:
			fmt.Println("一般")
		case 6:
			fmt.Println("及格")
		default:
			fmt.Println("不及格")
			}
  • select语句
    select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s);
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}

四、循环语句

  • for循环(三种写法)
 sum := 0
        for i := 0; i <= 10; i++ {
                sum += i
        }
       fmt.Println(sum)
 sum := 1
        for ; sum <= 10; {
                sum += sum
        }
        fmt.Println(sum)

        // 这样写也可以,更像 While 语句形式
        for sum <= 10{
                sum += sum
        }
        fmt.Println(sum)
无限循环
  sum := 0
        for true {
            sum++ // 无限循环下去
        }
        fmt.Println(sum) // 无法输出
  • 循环嵌套
	for m := 1; m < 10; m++ {
		/*    fmt.Printf("第%d次:\n",m) */
		for n := 1; n <= m; n++ {
			fmt.Printf("%dx%d=%d ",n,m,m*n)
		}
		fmt.Println("")
	}
  • break语句:经常用于中断当前 for 循环或跳出 switch 语句
 var a int = 10
   for a < 20 {
      fmt.Printf("a 的值为 : %d\n", a);
      a++;
      if a > 15 {
         /* 使用 break 语句跳出循环 */
         break;
      }
   }
  • continue语句:跳过当前循环的剩余语句,然后继续进行下一轮循环。
   var a int = 10
   for a < 20 {
      if a == 15 {
         /* 跳过此次循环 */
         a = a + 1;
         continue;
      }
      fmt.Printf("a 的值为 : %d\n", a);
      a++;    
   }  
  • goto语句:将控制转移到被标记的语句。
   var a int = 10
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++    
   }  
发布了116 篇原创文章 · 获赞 59 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44861399/article/details/105026757