Go语言入门之基础语法

news2024/10/1 1:20:55

Go语言入门之基础语法

1.简单语法概述

  • 行分隔符:

    一行代表一个语句结束,无需写分号。将多个语句写在一行可以用分号分隔,但是不推荐

  • 注释:

    // 或者/* */

  • 标识符:

    用来命名变量类型等程序实体。

    支持大小写字母、数字、下划线,第一个字符必须是字母或下划线

    不支持数字开头,自定义go语言中的关键词和运算符作为标识符

  • 字符串连接:

    通过+号实现

  • 空格:

    尽量多使用空格保证代码的美观性和可读性

2.关键字与标识符

  • 25个关键字或保留字:
    在这里插入图片描述

  • 36个预定义标识符:
    在这里插入图片描述

3.运算符

(1)算数运算符

就是简单的+-*/

(2)关系运算符

  • ==:两边相等则返回 true,否则false
  • !=:两边不相等则返回 true,否则false
  • >:左大于右则返回 true,否则false
  • <:右大于左则返回 true,否则false
  • >=:右大于等于左则返回 true,否则false
  • <=:做大于等于右则返回 true,否则false

(3)逻辑运算符

  • &&:AND运算,两边都是 true 则为 true 否则为 false
  • ||:OR运算,两边只要有一个true 则为 true 否则为 false
  • !: NOT运算,取反,条件为true 则为 false`

(4)位运算符

  • &,按位与,二进制都为1则为1,否则为0
  • |,按位或,二进制位有一个为 1 则为 1 否则为 0
  • ^,按位异或,二进制位不一样就为 1 否则为 0
  • <<,左移,左移 n 为就是乘以 2 的 n 次方
  • >>,右移,右移n位就是除以2的n次方

4.格式化字符串

Go语言中使用 fmt.Sprintffmt.Printf 格式化字符串并赋值给新串

  • Sprintf :根据格式化参数生成格式化的字符串并返回该字符串。
  • Printf :根据格式化参数生成格式化的字符串并写入标准输出。

区别实例:

var age = 17
var name = "go"
var url = "名字是%s&年龄是%d"
var target_url = fmt.Sprintf(url,name,age)  // 生成一个新的字符串
fmt.Println(target_url)                     // 输出新串

fmt.Printf(url,name,age)   // 直接输出

5.常见的转义字符

\n:     // 换行符
\r:     // 回车符
\t:     // tab 键
\u:     // Unicode 字符
\U:     // Unicode 字符
\\:     // 反斜杠自身
``// 内容原样输出

6.变化多端的占位符

(1)普通占位符

%v        // 相应值的默认格式      
%+v       // 打印结构体时会添加字段名     
%#v       // 打印结构体时会添加字段名和结构体名 
%T        // 打印出该数据的数据类型       	
%%        // 打印出一个百分号

(2)布尔占位符

%t      // 布尔占位符,只能打印true和false

(3)整型占位符

%d      // 十进制输出
%5d     // 设置宽度,效果类似于空格,前空5格为5d,后空为-5d,空换位0为05d

// 例子
fmt.Printf("|%5d|%-5d|%05d|", 1, 1, 1)  // 输入
|    1|1    |00001|                     // 输出

%b      // 二进制输出                             
%o      // 八进制输出 %#o输出的是以0开头的                            
%x      // 十六进制输出,字母形式为小写 a-f     %#x输出以0x开头     
%X      // 十六进制输出,字母形式为大写 A-F     %#X输出以0X开头 

(4)浮点型占位符

%b        // 浮点数转化为 2 的幂的科学计数法 输入 1.23,输出 5539427541665710p-52
%e        // 科学计数法           输入1.23          输出 1.230000e+00
%E        // 科学计数法           输入1.23          输出 1.230000E+00     
%f        // 浮点数输出(保留6位)  输入1.23          输出 1.230000
%.1f      // 保留1位小数四舍五入   输入1.234         输出  1.2
%8f       // 保留8个数           输入1.123456789   输出  1.123457
%4.3f     // 3精度,保留5个数     输入12.12345      输出  12.123
%5.2f     // 2精度,保留4个数     输入12.1234       输出  12.12
%5.2f     // 2精度,保留6个数     输入1234.1234     输出  1234.12
                                           

%g      // 去掉小数后面的0              输入  12.1200    输出  12.12
%.3g    // 保留3位数后去小数后0          输入  12.1200    输出  12.12
%.5g    // 保留5位数后去小数后0          输入  12.300     输出  12.3

%G      // 官网说和g有区别,但是测试结果相同,应该适用于特殊情况浮点型占位符

(5)字符占位符

%c      // 相应Unicode码点所表示的字符
%q      // 输出有单引号的相应Unicode码点所表示的字符
%U      // 输出格式为 U+hhhh 的字符串  %#U时多加了一个对应的字符  例:U+7583 '疃'

(6)字符串与字节切片

%s      // 输出字符串表示(string类型或[]byte)

        // 截断字符串  
        fmt.Printf("%.3s", "abcde")
        // 输出
        abc


%q      // 安全转义,和上面的一样,就多了个双引号

        // 例子输入
        fmt.Printf("%s %q \n", "你", []byte("好"))
        // 输出"好" 

%x      // 转化为十六进制输出,小写字母       
%X      // 转化为十六进制输出,大写字母

(7) 指针占位符

%p         // 十六进制表示,%p 带 0x, %#p 不带

// 输入
    a := 1
	b := []int{1, 2}
	fmt.Printf("%p|%#p", &a, b)
// 输出
0xc00000a0c8|c00000a100

(8) 其他占位符

+         //打印数值的正负号,默认输出 ASCII 编码字符,非 ASCII 编码会转成 Unicode 编码输出
          // 输入
          fmt.Printf("%+d|%+q", -1, "你好")
          // 输出
          -1|"\u4f60\u597d"

-          // 会在右侧填充空格,上面已展示过
#          // 上面用过很多次,%#q 可以打印出反引号包裹的字符串
空格        // 输出时可以留出空位 5d%等于5个空格加d


占位符不用全看,看几个重要的就行,按需取用,都是来自网上整理,如有问题请留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1913167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; func invertTree(root *TreeNode) *TreeNode {if root nil {return nil}left : invertTree(root.Left)right : invertTree(root.Right)root.Left rightroot.Right leftreturn root }

Python函数 之 模块和包

1.模块 1, 在Python 中, 每个以 .py 结尾的 Python 代码⽂件 都可以称为是⼀个模块。 2, 在模块中 别⼈书写好的功能(变量, 函数, 类)&#xff0c;我们可以拿来直接使⽤。 3, 我们自己写的代码文件&#xff0c; 想要作为模块让别⼈使⽤, 你的代码⽂件名(模块名) 满足标识符的规…

大话光学原理:4.散射:瑞利、拉曼、米氏和布里渊

这是一缕柔和的光&#xff0c;在空气的舞台上轻盈地跳跃。它悠然自得&#xff0c;在宁静的空间中缓缓前行。然而&#xff0c;一片细薄透明的介质挡住了它的脚步&#xff0c;它毫无预兆地撞上了这片障碍。在这短暂的接触中&#xff0c;它被分解成无数微小的粒子&#xff0c;被迫…

LabVIEW电滞回线测试系统

铁电材料的性能评估依赖于电滞回线的测量&#xff0c;这直接关系到材料的应用效果和寿命。传统的电滞回线测量方法操作复杂且设备成本高。开发了一种基于LabVIEW的电滞回线测试系统&#xff0c;解决传统方法的不足&#xff0c;降低成本&#xff0c;提高操作便捷性和数据分析的自…

前端面试题38(js原型与对象)

在JavaScript中&#xff0c;原型&#xff08;prototype&#xff09;是核心特性之一&#xff0c;它用于实现对象之间的继承和属性方法的共享。理解原型和对象的关系对于深入学习JavaScript至关重要。下面我会详细解释这两个概念以及它们是如何工作的&#xff0c;并给出一些示例代…

关于Python的类的一些理解

才发现python的类对象只能调用类方法 我想使用对类对象a使用系统调用的len方法就会报错 2.类对象a是什么&#xff1f; 答&#xff1a;是所有的带有self的成员变量 举例说明&#xff1a;红色的就是a里面的东西 class A:def __init__(self,data):self.datadataself.b1self.d{a…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&#xff09; 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力&#xff0c;将其转换为热量&#xff0c;…

【漏洞复现】通达OA v2017 video_file.php 任意文件下载漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

数据结构之折半查找

折半查找的算法思想&#xff1a; 折半查找又称二分查找&#xff0c;它仅仅适用于有序的顺表。 折半查找的基本思想&#xff1a;首先将给定值key与表中中间位置的元素&#xff08;mid的指向元素&#xff09;比较。midlowhigh/2&#xff08;向下取整&#xff09; 若key与中间元…

字典树(Tire树)

字典树(Tire树) 字典树是一种多叉树&#xff0c;又称为前缀树。核心思想是利用字符串的公共前缀。 字典树的根节点为空&#xff0c;从根节点到某一节点路径上的字符连接起来构成字符串&#xff0c;完整的字符串在链上而非结点上&#xff0c;一个节点的所有子节点都具有相同公…

AMSR-E L2 降雨子集:GES DISC 的 CloudSat 轨道 V002 (AMSERR_CPR) 位于同一地点

AMSR-E L2 Rainfall Subset, collocated with CloudSat track V002 (AMSERR_CPR) at GES DISC AMSR-E L2 降雨子集&#xff0c;与位于 GES DISC 的 CloudSat 轨道 V002 (AMSERR_CPR) 位于同一地点 简介 这是沿云卫星视场轨迹的 AMSR-E 雨率产品子集。子集的目标是选择并返回…

英福康INFICON FabGuard传感器集成与分析系统PPT

英福康INFICON FabGuard传感器集成与分析系统PPT

14-65 剑和诗人39 - 打造你自己的 Devin

​​​​​ 绝密 Devin 架构 更具体地说,构建您自己的 AI 代理。 Devin 使用 GPT-4 ,而人们已经开始用 Claude-3-Opus 构建替代方案 Devin 的 UI 体验更好。 例如,它甚至看不到浏览器,但它确实存在于用户面前 此外,你可以随时与它“交谈”,就像与人交谈一样,它会在后…

使用linux的mail命令发送html格式的邮件

1、关闭本机的sendmail服务或者postfix服务 #执行下面的命令&#xff0c;各位大侠都对号入座吧 #sendmial service sendmail stop chkconfig sendmail off #postfix service postfix stop chkconfig postfix off#再狠一点就直接卸载吧.. yum remove sendmail yum remove postf…

操作系统:信号究竟是什么?如何产生?

OS信号 一、信号的概念二、信号的产生1&#xff09;终端按键产生信号1、 前台进程、后台进程2、验证终端按键是否产生信号 2&#xff09;调用系统函数向进程发信号3&#xff09;硬件异常产生信号1、浮点数溢出&#xff0c;CPU产生信号2 浮点数溢出&#xff0c;产生信号原理3. 空…

【深度学习基础】MAC pycharm 专业版安装与激活

文章目录 一、pycharm专业版安装二、激活 一、pycharm专业版安装 PyCharm是一款专为Python开发者设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助用户在使用Python语言开发时提高效率。以下是对PyCharm软件的详细介绍&#xff0c;包括其作用和主要功能&…

11、Python之变量:看得见还是看不见

引言 在前面一篇关于Python变量的文章中&#xff0c;更多地结合对象的内存结构及字节码指令&#xff0c;来看不同代码针对不同的类型的对象的不同效果。 今天这篇文章中&#xff0c;想对新手在使用Python变量中&#xff0c;可能遇到的其他困惑&#xff0c;再展开来说一下。 大…

Windows近源攻击应急响应

一、靶机介绍 Windows近源攻击 前景需要&#xff1a;小王从某安全大厂被优化掉后&#xff0c;来到了某私立小学当起了计算机老师。某一天上课的时候&#xff0c;发现鼠标在自己动弹&#xff0c;又发现除了某台电脑&#xff0c;其他电脑连不上网络。感觉肯定有学生捣乱&#x…

量子保密通信协议原理:量子保密通信实验

纸上得来终觉浅&#xff0c;绝知此事要躬行。 在之前的文章中&#xff0c;我们对量子密钥分发协议原理、分发过程进行了详细的描述&#xff0c;今天我们实操一波。博主向大家隆重介绍一下华中师范大学量子保密通信虚拟仿真试验平台&#xff1a;量子保密通信是将量子密钥分发和一…