go-学习

news/2024/11/28 17:06:55/

文章目录

  • 简介
  • 标识符
  • 字符串的拼接,
  • 关键字
  • 数据类型
  • 声明变量
  • 常量
  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算
  • 赋值运算符
  • 其他运算符

简介

Go 语言的基础组成有以下几个部分:
1.包声明
2.引入包
3.函数
4.变量
5.语句 & 表达式
6.注释

package main
import "fmt"func main() {/* 这是我的第一个简单的程序 */fmt.Println("Hello, World!")
}
/*func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,
一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)*/

标识符

变量命名,
不能以数字开头;不能出现关键字;不能出现运算符;

字符串的拼接,

“+”,与java等语言相同

关键字

type,case,break,default,func,interface

数据类型

布尔类型:var b bool = true
数字类型:uint8,uint16,uint32,uint64,int8,float32,complex64
字符串类型
派生类型:
(a) 指针类型(Pointer)
(b) 数组类型
© 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型

声明变量

1,指定变量类型,如果没有初始化,则变量默认为零值

var (  // 这种因式分解关键字的写法一般用于声明全局变量a intb bool
)var a string = "Runoob"
var b, c int = 1, 2
var b int		//默认变量为0

2,根据值自行判定变量类型

var v_name = value
var d = true

3,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误

//这种不带声明格式的只能在函数体中出现
f := "Runoob" // var f string = "Runoob"var intVal int 
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句

注意问题:
如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。
_,numb,strs := numbers() //只获取函数返回值的后两个

常量

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"

多个相同类型的声明可以简写为:

const a, b, c = 1, false, "str" //多重赋值

常量还可以用作枚举:

const (Unknown = 0Female = 1Male = 2
)

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

const (a = "abc"b = len(a)c = unsafe.Sizeof(a)
)

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

const (a = iotab = iotac = iota
)

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2
可以简写为如下形式:

const (a = iotabc
)

实战

const (a = iota   //0b          //1c          //2d = "ha"   //d="ha",iota += 1e          //e="ha"   iota += 1f = 100    //f=100,iota +=1g          //g=100  iota +=1h = iota   //h=7,恢复计数i          //i=8
)
const (i=1<<iotaj=3<<iotakl
)
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1:左移 0,不变仍为 1;
j=3:左移 1,变为二进制 110,6;
k=3:左移 2,变为二进制 1100,12;
l=3:左移 3,变为二进制 11000,24

算术运算符

加 + ,减 - ,乘 *,除 /,余%,自增++,自减–

关系运算符

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

逻辑运算符

&&
||
!
逻辑运算符没有&和 |

位运算

&,|,^,<<,>>

赋值运算符

+=,<<=

其他运算符

&a; 将给出变量的实际地址。
*a; 是一个指针变量


http://www.ppmy.cn/news/1550674.html

相关文章

【一篇搞定配置】网络分析工具WireShark的安装与入门使用

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;各种软件安装与配置_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1.…

远程视频验证如何改变商业安全

如今&#xff0c;商业企业面临着无数的安全挑战。尽管企业的形态和规模各不相同——从餐厅、店面和办公楼到工业地产和购物中心——但诸如入室盗窃、盗窃、破坏和人身攻击等威胁让安全主管时刻保持警惕。 虽然传统的监控摄像头网络帮助组织扩大了其态势感知能力&#xff0c;但…

<项目代码>YOLOv8 红绿灯识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

从零开始学 Maven:简化 Java 项目的构建与管理

一、关于Maven 1.1 简介 Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中&#xff0c;但也可以用于其他类型的项目。Maven 的设计目标是提供一种更加简单、一致的方法来构建和管理项目&#xff0c;它通过使用一个标准的目录布局和一…

leetcode hot100【LeetCode 347.前 K 个高频元素】java实现

LeetCode 347.前 K 个高频元素 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: [1]Java 实现代码…

QT 中 SQLite 使用方法

一、pro文件中包含&#xff1a; QT ... sql 二、SQLite 使用要包含的头文件&#xff1a; #include <QSqlDatabase> // 数据库驱动 #include <QSqlQuery> // 数据库执行语句 #include <QSqlError> // 数据库日志 三、数据库创建 QSqlDatabase dat…

【CLIP】2: semantic-text2image-search前后端调试

添加了详细的调试信息,包括当前处理的图片、向量化结果,以及插入到集合中的数据详情。调试信息可以帮助你在运行过程中清楚地了解数据的处理情况。调试建议 向量维度和内容:通过打印向量的长度和部分内容,可以检查向量化过程是否正常。处理失败时的日志:捕获异常时记录具体…

LeetCode 3243. Shortest Distance After Road Addition Queries I

&#x1f517; https://leetcode.com/problems/shortest-distance-after-road-addition-queries-i 题目 有 n 个城市&#xff0c;编号 0 ~ n-1&#xff0c;从城市 i 到 i1 有一条路给若干高速路&#xff0c;表明从城市 u 到 v 有一条新增的路&#xff0c;v - u > 1返回每新…