Go语言入门之基础语法

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 := 1b := []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.mzph.cn/pingmian/43954.shtml

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

相关文章

k8s核心操作_Deployment的扩缩容能力_Deployment自愈和故障转移能力---分布式云原生部署架构搭建022

然后我们上面说了k8s中的deployment的多副本能力 然后,我们再来看 k8s中的deployment的扩缩容能力 可以看到,对于扩容,要使用 kubectl scale 命令 对于缩容 要使用kubectl scale 命令都是使用这个命令对吧 来试试,可以看到上面命令 首先看看 kubectl get pod 可以看到有…

第58期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

网络编程:TCP

一、tcp编程 注意 1.数据本身有顺序 2.发送和接收次数不需要对应 3. 1. C/S 模式 》服务器/客户端模型 server:socket()-->bind()--->listen()-->accept()-->recv()-->close() client:socket()-->connect()-->send()-->close(); int on 1; setso…

常用的设计模式和使用案例汇总

常用的设计模式和使用案例汇总 【一】常用的设计模式介绍【1】设计模式分类【2】软件设计七大原则(OOP原则) 【二】单例模式【1】介绍【2】饿汉式单例【3】懒汉式单例【4】静态内部类单例【5】枚举&#xff08;懒汉式&#xff09; 【三】工厂方法模式【1】简单工厂模式&#xf…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名

新建第三方服务: 引入common 把common中oss的依赖都拿到第三方服务中来 配置文件: 加上nacos注解:<

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

Android 通知访问权限

问题背景 客户反馈手机扫描三方运动手表&#xff0c;下载app安装后&#xff0c;通知访问权限打不开。 点击提示“受限设置” “出于安全考虑&#xff0c;此设置目前不可用”。 问题分析 1、setting界面搜“授予通知访问权限”&#xff0c;此按钮灰色不可点击&#xff0c;点…

大小端详解

引例 我们知道整形(int)是4个字节&#xff0c;例如随便举个例子&#xff1a;0x01020304&#xff0c;它一共占了四个地址位&#xff0c;01,02,03,04分别占了一个字节&#xff08;一个字节就对应了一个地址&#xff09;。 那么就会有个问题&#xff1a;我们的01到底是存储在高地…

mysql 5.7.44 32位 zip安装

前言 因为研究别人代码&#xff0c;他使用了5.7的 32位 mysql &#xff0c;同时最新的 8.4 64位 mysql 不能用官方lib连接。所以安装这个版本使用&#xff0c;期间有些坑&#xff0c;在这里记录一下。 下载路径 mysql官方路径&#xff1a;https://downloads.mysql.com/archi…

Linux——多线程(五)

1.线程池 1.1初期框架 thread.hpp #include<iostream> #include <string> #include <unistd.h> #include <functional> #include <pthread.h>namespace ThreadModule {using func_t std::function<void()>;class Thread{public:void E…

Redis 7.x 系列【21】主从复制

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 工作原理2.1 建立连接2.2 全量复制2.3 命令传播2.4 增量复制 3. 拓扑架构3.…

Uniapp表单提交

template中&#xff1a; <template><view class""><button class"tianjia" click"tianjia">添加</button><view class"divOne" v-show"a"><text class"guanbi" click"gua…

本地 HTTP 文件服务器的简单搭建 (deno/std)

首发日期 2024-06-30, 以下为原文内容: 在本地局域网搭建一个文件服务器, 有很多种方式. 本文介绍的是窝觉得比较简单的一种. 文件直接存储在 btrfs 文件系统之中, 底层使用 LVM 管理磁盘, 方便扩容. 使用 btrfs RAID 1 进行镜像备份 (一个文件在 2 块硬盘分别存储一份), 防止…

网络通信、BIO、NIO

1. 涉及的网络基础知识 Socket&#xff1a; 操作系统提供的api&#xff0c;介于应用层和tcp/ip层之间的软件层&#xff0c;封装服务器客户端之间网络通信相关内容&#xff0c;方便调用 IO多路复用&#xff1a; &#xff08;I/O Multiplexing&#xff09;是一种IO操作模式&a…

Python 的 metaclass

文章目录 先说结论1. metaclass 的作用2. 主要的执行过程 1. metaclass.__new__2. metaclass.__call__关于 metaclass.__init__ 3. metaclass.__prepare__4. 自动创建 __slots__ 属性4.1 metaclass 的接口类4.2 metaclass conflict 5. Class metaprogramming 先说结论 1. meta…

Java技术栈总结:JVM虚拟机篇

一、Java的四种引用类型 1、强引用 最常见的引用&#xff0c;类似Object obj new Object()、String str “hello”。如果一个对象具有强引用&#xff0c;垃圾回收器绝对不会回收它。即使抛出“OutOfMemoryError”错误&#xff0c;程序终止&#xff0c;也不会随意回收具有强引…

20240710 每日AI必读资讯

&#x1f916;微软&#xff1a;不会像 OpenAI 一样阻止中国访问 AI 模型 - OpenAI 将于周二&#xff08;7 月 9 日&#xff09;开始阻止中国用户访问其 API。 - 微软发言人表示&#xff1a;Azure OpenAI API服务在中国的提供方式没有变化。 - 公司仍然通过部署在中国以外地区…

妙笔生词智能写歌词软件:创新助力还是艺术之殇?

在音乐创作日益普及和多样化的当下&#xff0c;各种辅助工具层出不穷&#xff0c;妙笔生词智能写歌词软件便是其中之一。那么&#xff0c;它到底表现如何呢&#xff1f; 妙笔生词智能写歌词软件&#xff08;veve522&#xff09;的突出优点在于其便捷性和高效性。对于那些灵感稍…

c/c++:牛客小白月赛93

比赛链接 A 生不逢七 题目描述(题目链接添加链接描述)&#xff1a; 睡前游戏中最简单又最好玩的游戏就是这个啦&#xff01; 该游戏规则为&#xff1a;多名玩家轮流报数&#xff0c;当要报的数字中含有 7 或者是 7 的倍数时&#xff08;例如 37&#xff0c;49&#xff09;&…

腾讯又一平台即将停止运营

随着腾讯公司业务和战略的调整&#xff0c;某些业务逐渐退出历史舞台&#xff0c;如“腾讯直播平台NOW”&#xff0c;以及“QQ签到”&#xff0c;“腾讯待办”&#xff0c;“企鹅FM音频平台”等&#xff0c;最近又有一则重磅消息&#xff0c;那就是“腾讯课堂”也即将停止运营。…