golang运算与循环等

2023-11-18

一、golang运算符

1、算术运算符

+ 相加
- 相减
* 相乘
/ 相除
% 求余
++ 自增
-- 自减

2、关系运算符

== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

3、位运算符

& 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。
| 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。
^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。

4、逻辑运算符

&& 与
|| 或
!(感叹号) 非

5、赋值运算符

+= (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)

 

6、运算符优先级

 

二、golang if判断

语法:
if 条件1 {
} else if 条件2 {
} else if 条件3 {
} else {
}

如:

func add(x int){
    if x == 0 {
        fmt.Println("0")
}else if x == 1 { 
        fmt.Println("1")
}else if x == 2 {
        fmt.Println("2")
}
}

  

 三、for循环

语法:
for i := 0; i < 10; i++ {
}
如:

func main(){
    for i := 0;i < 10;i++{
        fmt.Println(i)}
}

 

四、while语句(死循环)

#死循环(go没有while,死循环也是用for)
语法:
for true {
}或
for {
}

如:

var i int
     for {
      i += 1
      fmt.Println(i)
     }

  

五、range (类似python的range)(不能是数字,可以是字符串、列表、键值对等)

例子:

例子1:
      x := "hello"
      for i := range x{
      fmt.Println(i)
}
结果:
0
1
2
3
4

例子2:
      x := "hello"
      for i,v := range x{
      fmt.Println(i,v)
}
结果:
0 104
1 101
2 108
3 108
4 111

  

六、switch case

语法:
switch var {
case var1:
case var2:
case var3:
default:
}

如:

func sc(x int){
    switch x {
    case 1:
        fmt.Println("1")
    case 2,3:
        fmt.Println("2")
    case 5,4:
        fmt.Println("3")
    default:
        fmt.Println("default")

    }  

}

func main() {
    sc(1)
    sc(2)
    sc(5)
    sc(10)
}

结果:
1
2
3
default

  

#使用fallthrough强制执行后面的case代码

例子:

func sc(x int){
    switch x {
    case 5,4:
        fmt.Println("3")
        fallthrough //添加,就会执行后面一条case的结果
    case 6,7:
        fmt.Println("5")
    case 8:
        fmt.Println("7")
    default:
        fmt.Println("default")

    }  

}

func main() {
    sc(5)
}
结果:
3
5

  

七、label break(用于退出循环)

例如:




func main() { x := 0 LABLE_test: //指定标签 for { x += 1 fmt.Println(x)      if x == 3{ continue //跳过当前循环,和其它语言的continue一样      } if x > 10{ break LABLE_test //跳出指定的标签,如果后面不接标签的话,就是退出当前循环 } } } 结果: 1 2 4 5 6 7 8 9 10 11

  

 八、goto语句

1、go语言的goto语句可以无条件的转移到程序中的指定行
2、goto语句通常与条件语句配合使用
3、在go程序中一般不主张使用goto语句。

goto语法

toto label
......
label:statement

 

goto流程图

例如:

package main
import "fmt"


func main(){
    var n int = 2
    fmt.Println("goto")
    if n > 1 {
        goto label1
    }
    fmt.Println("s1")
    fmt.Println("s2")
    fmt.Println("s3")
    label1:
    fmt.Println("s4")
    fmt.Println("s5")

}


##结果
goto
s4
s5

  

 

 

九、golang包的导入

包的基本概念

每一个go文件都是属于一个包,go是以包的形式累管理文件和项目目录结构的。

包的作用

1、区分相同名字的函数,变量等标识符

2、当程序文件很多时,可以很好的管理项目

3、控制函数、变量的访问范围,即作用域

 

包的导入

 

1、单个包导入 import "fmt"
2、多个包导入
import (
"fmt"
"strings"
)
3、 点(.)操作
点(.)标识的包导入后,调用该包中函数时可以省略前缀包名
如:
package main
import . "fmt"
func main(){
Println("ok") //省略了前面的fmt
}
4、别名
如:
package main
import qq "fmt" //设置fmt别名为qq
func main(){
qq.Println("ok")
}
5、(_)下划线
导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数。
如:
import _ "fmt"

 

十、包的导出

1、查看GOPATH变量,没有就配置

[root@localhostgo_test]#go env 
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go_test" //变量
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build340883937=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

###2、创建包
[root@localhostfz]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
[root@localhostfz]#pwd
/root/go_test/src/fz
[root@localhostfz]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
[root@localhostfz]#cat fz.go 
package fz

func Add(a,b int) int { //首字母必须大写
    return a + b 
}

##应用
[root@localhostgo_test]#cat class7.go 
package main
import (
    "fmt"
    "fz"
)

func main(){
    var x int
    x = fz.Add(1,2)
    fmt.Println(x)

}

##测试
[root@localhostgo_test]#go run  class7.go
3

  

转载于:https://www.cnblogs.com/zhangb8042/p/10496016.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang运算与循环等 的相关文章

  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • 在k8s集群内搭建Prometheus监控平台

    基本架构 Prometheus由SoundCloud发布 是一套由go语言开发的开源的监控 报警 时间序列数据库的组合 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态 任意组件只要提供对应的HTTP接口就可以接入
  • .NetCore技术研究-ConfigurationManager在单元测试下的坑

    最近在将原有代码迁移 NET Core 代码的迁移基本很快 当然也遇到了不少坑 重构了不少 后续逐步总结分享给大家 今天总结分享一下ConfigurationManager遇到的一个问题 先说一下场景 迁移 NET Core后 已有的配置文
  • 如何使用Visual Studio Code运行C/C++程序

    与Visual Studio 2008 2010 集成开发工具不同 Visual Studio Code只是一个代码编辑器 在Windows环境下 需下载安装 C C 编译器 配置环境等 VS Code才可以编译代码和运行程序 1 下载安装
  • javaScript基础面试题 --- 原型链

    1 原型可以解决什么问题 对象共享属性和共享方法 2 谁有原型 函数有prototype 对象有 proto 3 查找顺序 当查询一个对象的属性时 JavaScript 会首先检查对象自身是否有这个属性 如果对象本身没有该属性 那么 JS
  • 使用python和snapshot备份ElasticSearch索引数据

    该python备份snapshot的索引数据脚本 通过Elasticsearch连接es 然后通过es indices get alias函数获取所有索引名称 通过列表的startswith函数剔除 开头的自带索引名称 然后把所有索引名称放
  • 多边形的面积

    1 三角形面积 xy平面内 有三角形123 如下图所示 图1 借助矢量叉积和点积 这个三角形的面积公式非常简单 这个面积是有符号的 1 2 3逆时针排列 则面积为正 1 2 3顺时针排列 则面积为负 这是对右手系的总结 如果从背面看这个坐标
  • 11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记

    自定义Events 在AttributeComponent的 h头文件上加上代码 自定义Event DECLARE DYNAMIC MULTICAST DELEGATE FourParams FOnHealthChanged AActor
  • 思科模拟器简单校园网设计,期末作业难度

    文章简介 本文用思科模拟器设计和规划了一个校园网络 相当于计算机网络相关专业期末作业难度 作者简介 网络工程师 希望能认识更多的小伙伴一起交流 可私信或QQ号 1686231613 一 网络需求分析 1 学校建有办公室 实验室 教学楼 学生
  • 【STM32】RS485通信使用DMA串口发送数据出现数据丢失、断包问题排查方法

    最近在搞这个Modbus协议 由于485协议是半双工的 区别于RS 232的全双工 考虑不周导致调试modbus协议时候出了不少问题 第一 大多数开发板上的485芯片是MAX485 发送和接收状态的切换是通过IO给到这个两个引脚不同的电平进
  • win 11又更新,新功能简直绝了!

    很早之前 咱就知道微软下半年将会有一次大动作 没错 就是发布Win11 22H2正式版 之前有说过9月份发 现在也确实做到了 微软现在已经面向190多个国家 地区推送了Windows 11 22H2正式版更新 更新之后版本号为22621 5
  • linux中通过sed命令通过正则表达式过滤出中文[^[\u4E00-\u9FA5A-Za-z0-9_]+$]

    linux中通过sed命令通过正则表达式过滤出中文 sed r s u4E00 u9FA5A Za z0 9 lt gt 0 9 a z A Z g zz txt gt a txt
  • flutter listview 滚动到底部_(五) Flutter入门学习 之 Widget滚动

    列表是移动端经常使用的一种视图展示方式 在Flutter中提供了ListView和GridView 为了可能展示出更好的效果 我这里提供了一段Json数据 所以我们可以先学习一下Json解析 一 JSON读取和解析 在开发中 我们经常会使用
  • sql注入原理及解决方案

    sql注入原理就是用户输入动态的构造了意外sql语句 造成了意外结果 是攻击者有机可乘 SQL注入 SQL注入 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命令 比如先前的很多
  • 随机练习题:浅浅固定思路

    1 牛牛的10类人 2 牛牛的四叶玫瑰数 3 牛牛的替换 4 牛牛的素数判断 笔者开头感想 如今大部分高校已经开学 当然笔者也不列外 但是由于疫情的原因 笔者被迫在家上网课学习 一脸忧愁 而这恰恰给了笔者自学的机会 相信笔者会加油滴 按照时
  • Acwing-4366. 上课睡觉

    假设最终答案为每堆石子均为cnt个 cnt一定可以整除sum 石子的总数 我们可以依次枚举答案 sum小于等于10 6 所以cnt的数量等于sum约数的个数 10 6范围内 约数最多的数为720720 它的约数个数有240个 int范围内
  • 单边带(SSB)调制技术

    文章目录 单边带 SSB 调制技术 1 双边带简述 2 单边带调制 单边带 SSB 调制技术 1 双边带简述 首先简述一下双边带调制 所谓双边带 DSB double sideband 调制 本质上就是调幅 时域上将基带信号x t 和高频载
  • pytorch FX模型静态量化

    文章目录 前言 一 pytorch静态量化 手动版 踩坑 二 使用FX量化 1 版本 2 代码如下 总结 前言 以前面文章写到的mobilenet图像分类为例 本文主要记录一下pytorchh训练后静态量化的过程 一 pytorch静态量化
  • 特征工程完全总结(Python源码)

    https www jianshu com p 114385e5a757
  • 【Linux】多线程的互斥与同步

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 线程冲突 二 重入与线程安全 1 线程不安全的情况 2

随机推荐

  • svg php,如何加载使用PHP生成的SVG文件?

    我想用 PHP创建一个SVG文件 然后将其包含在HTML文件中 这是我到目前为止 this tutorial之后 svg php header Content type image svg xml gt p gt http www w3 o
  • Session、Token、Cookie的区别及实际使用

    在现代Web开发中 身份验证和会话管理涉及一些基本概念 如Session Token和Cookie 尽管它们都用于管理不同方面的Web会话 但它们之间的差异是很重要的 在本文中 我们将一一介绍Session Token和Cookie的定义
  • 空间直角坐标系右手系和左手系的判定方法及绕轴旋转的正方向

    1 判定坐标系 右手大拇指指向z轴方向 其余四指由x轴握向y轴方向 如果成功 那么判定为右手系 左手大拇指指向z轴方向 其余四指由x轴握向y轴方向 如果成功 那么判定为左手系 坐标系的种类判断成功 那么接下来该判断旋转正方向 2 旋转正方向
  • Linux常用基本操作命令详解(一)

    Linux实用命令 1 前 言 2 常用Linux命令 2 1 常用的系统工作命令 2 2 系统状态检测命令 2 3 工作目录切换命令 3 小结 4 复习巩固题 参考资料 1 前 言 最近学习了有关Linux的一些常用基本命令 在此做个简单
  • python学习笔记 - 如何从几千个文件中寻找出指定的内容

    今天在处理数据时遇到这么个问题 如何从几千个txt文件中找到我想要的内容呢 这是我的实现思路 读取文件 选中指定的内容段 在新路径下保存内容段并命名为之前的文件名 以下是用python实现的代码 有详细注释 usr bin env pyth
  • Selenium Python 教程

    Selenium Python 教程 准备工作 元素定位 控制浏览器操作 Webelement常用方法 鼠标操作 键盘事件 获取断言信息 等待页面加载完成 隐式等待 在不同的窗口和框架之间移动 警告框处理 下拉框选择 文件上传 cookie
  • 网络安全(黑客)自学建议一一附学习路线

    温馨提示 为了避免误入歧途 自学请优先看 网络安全法 下面是一些学习建议 1 多请教有经验的人 切忌钻牛角尖 特别是刚入门的什么都不了解的情况下 可能你花好几天研究的一个东西 人10分钟就能搞定 一定不要做闷葫芦 有问题多问 遇到问题不可怕
  • 机器视觉第二次大作业

    内容 给定图像 消除其中的周期性干扰 以下为处理过程 1 显示图像的傅里叶变换后的频谱和傅里叶变换对数所得的频谱 从图2 可以明显的看出周期性噪声在频谱上的分布 于是在低中高频段上都有分布 但是低 通部分较少 所以考虑使用低通滤波器 此部分
  • java学习笔记13--反射机制与动态代理

    本文地址 http www cnblogs com archimedes p java study note13 html 转载请注明源地址 Java的反射机制 在Java运行时环境中 对于任意一个类 能否知道这个类有哪些属性和方法 对于任
  • StyleGAN2 解释

    本文是 1 的译文 按照作者Connor Shorten 的说法 此博客讨论的是StyleGAN2的诸如weight demodulation path length regularization和去掉progressive growing
  • VS Code Remote基于docker的Python开发环境搭建,ssh免密登录

    win电脑 生产一对公钥与私钥 私钥在win 公钥pub在服务器 ssh keygen 服务器复制私钥和ssh配置 1 root用户进入服务器 cd ssh 复制win电脑上的 ssh id rsa pu到服务器 root ssh 目录下
  • 【const-指针-数组】

    文章目录 const const 数组 const 指针 最后 const const是constant的简写 它是用来定义常量 它限定一个变量不允许被改变 产生静态作用 修饰静态变量 const int a 3 int const a 3
  • ZYNQ 库函数学习之SPI

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片的管脚 同时为PCB的布局上节省空间 提供方便 正是出于这种简单易用的特性
  • 为了买车,我用Python把某帝给搞采集了。

    上班摸鱼看了2个星期车评 还是一头雾水 选合资还是国产 发动机cvt好还是双离合好 艾瑞泽5 GT动力足 但腰线和前脸让人吐槽 真的可靠吗 国产选长安逸动还是吉利帝豪 标志408出来了 还有艾瑞泽8很漂亮 看会视频吧 同质化严重 讲来将去就
  • 基于51单片机的智能晾衣架的设计与实现(源码+论文)_kaic

    摘要 随着社会和市场的变化 我国经济的快速发展和房地产行业的快速扩张 使得装修家居行业飞速发展 在行业高速发展的同时 消费者家居智能化要求也在日益发展 随着科学技术的进步和电子技术的发展 单片机作为智能控制芯片 越来越多的应用到生活中的个各
  • Verilog实例-AMBA(AHB)协议

    目录 一 简介 1 1 AHB 1 2 signal list 1 3 Bus interconnection 总线互联 1 4 Overview of AMBA AHB operation 1 4 1 Basic transfer 1 4
  • ElasticSearch6.x 基于SpringBoot 实现ElasticSearch的统计查询

    AggregationUtil java 实现elasticsearch 搜索引擎针对指定索引的max 最大值 min 最小值 sum 合计统计 avg 平均值统计 stats 基本统计 extendedStats 高级统计 cardina
  • 常见的笔试题之mysql

    MYSQL篇 mysql版本 5 7 安装文件 mysql installer community 5 7 11 0 msi 1 写出复制表的sql语句 例如employ为原表名 copytb为目标表名 语句如下 1 create tabl
  • ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

    js定时器怎么写 就是在特定时间执行某段程序 复制代码 代码如下 function var handler function var timer setInterval handler 1000 var clear function cle
  • golang运算与循环等

    一 golang运算符 1 算术运算符 相加 相减 相乘 相除 求余 自增 自减 2 关系运算符 等于 不等于 gt 大于 lt 小于 gt 大于等于 lt 小于等于 3 位运算符 按位与运算符 是双目运算符 其功能是参与运算的两数各对应的