Go 语言基础

news/2024/7/4 0:52:05

Go 语言内置的运算符有:
1.算术运算符:+ - * / % ++ --
2.关系运算符:== != > < >= <=
3.逻辑运算符:&& || !
4.位运算符:& | ^ << >> 将其先转换为二进制数,在根据如下表规则

p    q    p & q    p | q    p ^ q
0    0      0        0        0
0    1      0        1        1
1    1      1        1        0
1    0      0        1        1

如假定 A = 60; B = 13; 其二进制数转换为:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
A<<2 =240 二进制为 1111 0000 左移n位就是乘以2的n次方。
A>>2 =15  二进制为 0000 1111 右移n位就是除以2的n次方。 

5.赋值运算符

    1.=     2.+=     3.-=     4.*=     5./=     6.%=    
    7.<<=    左移后赋值    C <<= 2 等于 C = C << 2
    8.>>=    右移后赋值    C >>= 2 等于 C = C >> 2
    9.&=    按位与后赋值    C &= 2 等于 C = C & 2
    10.^=    按位异或后赋值    C ^= 2 等于 C = C ^ 2
    11.|=    按位或后赋值    C |= 2 等于 C = C | 2

6.其他运算符

&    返回变量存储地址    实例&a:将给出变量的实际地址。
*    指针变量。        实例*a:是一个指针变量

7.运算符优先级
有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级    运算符
  7        ^ !
  6    * / % << >> & &^
  5      + - | ^
  4    == != < <= >= >
  3         <-
  2         &&
  1         ||

当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。

Go 语言条件语句

if
if...else
if 嵌套语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
switch 语句 switch 语句用于基于不同条件执行不同动作。
select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

Go 语言循环语句

for 循环 重复执行语句块
循环嵌套 在 for 循环中嵌套一个或多个 for 循环

循环控制语句
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句 将控制转移到被标记的语句。

循环判断的例子输出 1-100 素数:

package main
import "fmt"

func main() {
    var a, b int
    for a = 2; a <= 100; a++ {
        for b = 2; b <= (a / b); b++ {
            if a%b == 0 {
                break
            }
        }
        if b > (a / b) {
            fmt.Printf("%d\t是素数\n", a)
        }
    }
}

Go 语言函数

Go 语言函数定义格式如下:

func function_name( [parameter list 参赛列表] ) [return_types 返回类型] {
   函数体
}

函数参数
函数如果使用参数,该变量可称为函数的形参。
形参就像定义在函数体内的局部变量。
调用函数,可以通过两种方式来传递参数:

传递类型 描述
值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递 :引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。

函数用法
函数作为值 函数定义后可作为值来使用
闭包 闭包是匿名函数,可在动态编程中使用
方法 方法就是一个包含了接受者的函数

Go 语言变量作用域

Go 语言中变量可以在三个地方声明:

函数内定义的变量称为局部变量
函数外定义的变量称为全局变量
函数定义中的变量称为形式参数

package main

import "fmt"

/* 声明全局变量 */
var a int = 20

func main() {
    /* main 函数中声明局部变量 */
    var a int = 10
    var b int = 20
    var c int = 0

    fmt.Printf("main()函数中 a = %d\n", a)
    c = sum(a, b)
    fmt.Printf("main()函数中 a = %d\n", a)
    fmt.Printf("main()函数中 c = %d\n", c)
}

/* 函数定义-两数相加 */
func sum(a, b int) int {
    a = a + 1
    fmt.Printf("sum() 函数中 a = %d\n", a)
    fmt.Printf("sum() 函数中 b = %d\n", b)
    return a + b
}


/*main()函数中 a = 10
sum() 函数中 a = 11
sum() 函数中 b = 20
main()函数中 a = 10
main()函数中 c = 31*/


Go 语言数组

初始化数组
以下演示了数组初始化:

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
初始化数组中 {} 中的元素个数不能大于 [] 中的数字。


http://www.niftyadmin.cn/n/1933759.html

相关文章

基础环境搭建用到的指令

一、/etc/hostname、/etc/hosts(主机名和IP配置文件)、/etc/ntp.conf 一、pvcreate 二、fdisk 三、vgcreate 四、vgextend 五、lvcreate 六、mkfs.ext4 转载于:https://www.cnblogs.com/niaocaizhou/p/10875416.html

「快报」AWS DNS服务器遭受DDoS 号称100%可用性的服务瘫痪了

美国东部时间9&#xff1a;00左右&#xff0c;互联网基础服务巨头AWS开始出现局部故障。受影响的不止是亚马逊S3用户&#xff0c;亚马逊提供的一系列服务例如关系数据库服务RDS、弹性计算云EC2、弹性负载均衡ELB等都被波及。 亚马逊的售后支持人员称AWS的DNS服务器受到了DDoS攻…

maven整合ssm框架

1、创建maven web工程 创建完成后&#xff0c;项目结构如下 2、项目配置文件 在pom.xml中添加SSM框架相关jar包的依赖关系&#xff0c;pom.xml代码如下 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/…

Mysql之库、表、记录相关操作3

Mysql之库、表、记录相关操作3 增语法 1.所有数据按顺序插入 insert [into] 表名 values (值1, ..., 值n)[, ..., (值1, ..., 值n)];2.指定字段匹配插入&#xff0c;可以任意顺序 insert [into] 表名(字段2, 字段1, ..., 字段n) values (值2, 值1, ..., 值n)[, ..., (值2, 值1…

MySQL8.0.16新特性:The Communication Protocol In Group Replication

MGR优雅升级到MySQL8.0.16 传统的升级手段之一&#xff0c;5.7 MGR集群与8.0 MGR集群进行数据传输&#xff0c;程序切换新集群后测试是否正常. 如果不正常&#xff0c;要么将新集群的新增数据同步回旧集群&#xff0c;要么就舍弃掉这部分数据&#xff0c;一般看来这种回滚都是繁…

wsgiref模块

使用流程 from urllib.parse import parse_qs#导入parse_qs用于解析form提交的数据from wsgiref.simple_server import make_server#导入make_server方法def fun(environ,start_response):xxxreturn [data]   #最终必须返回一个列表httpdmake_server(127.0.0.1,10086,fun)#类…

Python19/1/11--标签与过滤器/Django模块导入继承/静态文件配置

1 模板语言之变量: -{{ }} 相当于执行了print -深度查询 . 如果是方法,不能加括号,不能传参数2 过滤器 {{ 变量|过滤器的名字:参数 }} -add -default -safe:(慎重,注意xss攻击) -在视图层处理标签字符串:href2mark_safe(href) -length -date3…

「青松资讯」2019年第三季度DDoS攻击报告

新闻概述 上季度&#xff0c;我们发现一种新的DDoS攻击&#xff0c;攻击者利用Memcached协议进行放大攻击&#xff0c;正如之前我们的推测。比如&#xff0c;安全人员最近发现一类攻击是通过WS-Discovery多播协议欺骗返回IP地址。虽然网络罪犯最近才开始使用这种方法&#xff…