首页 > 其他分享 >Golang学习--基础语法

Golang学习--基础语法

时间:2024-01-29 16:24:28浏览次数:17  
标签:语法 变量 -- fmt Golang var int 字符串 strings

Golang学习

Golang的优势

极简单部署方式

-可直接编译成机器码

-不依赖其他库

-直接运行即可部署

静态类型语言

-编译的时候能够检查出隐藏的大多数问题

语言层面的并发

-天生的基因支持

-充分的利用多核

强大的标准库

-runtime系统调度机制

-高效的GC垃圾回收

-丰富的标准库

简单易学

-只有25个关键字

-C语言简洁基因,内嵌C语法支持

-面向对象特征(封装,继承,多态)

-跨平台

1 基本语法

1.0 Hello World

package main

import "fmt"

func main() {
   fmt.Println("Hello World")
}

注意,Golang中大括号的左括号必须不换行,否则会语法错误

1.1 变量的声明

var 变量名 变量类型
var age int

简短格式类型

我们可以使用:=来定义变量

比如:

i := 1

温馨提示:

  1. 定义变量,同时显式初始化
  2. 不能提供数据类型
  3. 只能用在函数(方法)内部

以下代码会报错

package main

func main() {

    var level int = 1
    // 再次声明并赋值 会报错 no new variables on left side of := (左边的变量已经被声明了,不能重复声明)
    level := 1
}

在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中(与顺序),即便其他变量名可能是重复声明的,编译器也不会报错

1.2 基本数据类型

bool 同C++,只有true和false两种值
string 字符串
int 整型
uint 无符号整数,uint8,uint16,uint32,uint64
byte 就是uint8
rune 类似于int32
float32、float64 浮点数
complex64、complex128 复数

声明变量时,如果不声明数据类型,系统会自动进行判断

var level = 1;

布尔型数据只有true和false,且不能参与任何计算以及类型转换

1.2.1 字符:

-ASCII 用byte存储

-UTF-8 用rune存储

var ch byte = 'A'
var c2 rune = '我'

1.2.2 字符串:

一经定义,一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,字符串是 UTF-8字符的一个序列。 注意:字符串底层是byte数组

字符串长度 len(s)
字符串拼接 + / +=
访问字符串 ASCII 直接访问 s[0] 
         UTF-8 []rune(s)[0] //先转换成rune数组
字符串遍历
1.传统for循环
for i := 0; i < len(s); i++ {
   fmt.printf("%c", s[i]) 
}

2.for range遍历
for _, c := range s {
    fmt.printf("%c",c)
}

print : 结果写到标准输出
Sprint:结果会以字符串形式返回
Println:换行输出
Printf:按照指定格式输出

3.字符串转int
首先需要import "strconv"
a, _ := strconv.Atoi("123")
//这个函数有两个返回值,第二个返回值表示能否进行状态转换
fmt.Println(reflect.TypeOf(str))

4.int转字符串
str := strconv.Itoa(123)

5.判断字符串B是否在字符串A中出现过
首先需要import "strings"
strings.Contains(A,B)

6.统计B在A中出现的次数
strings.Count(A,B)

7.不区分大小写字符串比较
strings.EqualFold(A,B)

8.查询B在A中第一次出现的位置(相当于C++中的find)
strings.Index(A,B)
最后一次出现 stirngs.lastIndex(A,B)

9.字符串大小写转换表
strings.ToUpper(A)
strings.ToLower(B)

10.去除空格,去除左右指定字符
TrimSpace()
Trim()
TrimLeft()
TrimRight()

批量格式类型

var (
    a int
    b string
    c []float32
) 

1.3 作用域

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

全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

1.4 标准输入输出

1.4.1 标准输入

需要import "fmt"

//通过空格或回车分隔参数(常用)
fmt.Scan(&a, &b)
//一行一行读取参数,通过空格分隔参数
fmt.Scanln(&a, &b)

//类比C语言scanf
fmt.Scanf("%d%d",&a, &b)

1.4.2 标准输出

//换行输出
fmt.Println()

fmt.Print()

//格式化输出
fmt.Printf()

%c  单一字符
%T  动态类型
%v  本来值的输出
%+v 字段名+值打印
%d  十进制打印数字
%p  指针,十六进制
%f  浮点数
%b 二进制
%s string

标签:语法,变量,--,fmt,Golang,var,int,字符串,strings
From: https://www.cnblogs.com/showball/p/17994772

相关文章

  • 数据结构——队列链式存储实现
    队列链式存储主要有两个方面需要注意,一个是定义时应该定义两种结构体,一个是具体节点,一个是队列本身。具体节点用于存储具体数据data和指向下一个节点的指针*next。而队列本身的结构体只会储存两个具体节点的指针,一个指向队头,一个指向队尾。第二个需要注意的是,出队操作,对于只剩......
  • CSAPP学习笔记——chapter8 异常控制流
    CSAPP学习笔记——chapter8异常控制流简介异常控制流(ExceptionalControlFlow,ECF)是在计算机系统中处理不寻常或异常情况的一种机制。它允许系统跳出正常的顺序控制流,响应那些并不直接由程序的控制流逻辑触发的事件。ECF在硬件、操作系统和应用程序层面都有体现,并且是现代计算......
  • 查询表、视图字符串字段的长度
    SELECTa.colorder字段序号,a.name字段名,b.name类型,CASEWHENCOLUMNPROPERTY(a.id,a.name,'PRECISION')=-1THEN',长度无限制'ELSE',长度限制'+CAST(COLUMNPROPERTY(a.id,......
  • docker-compose部署简单案例
    Dockerfile#设置基础镜像FROMpython:3.7#设置环境变量ENVPYTHONUNBUFFERED=1ENVPATH/usr/local/bin:$PATH#设置工作目录WORKDIR/home/lab#复制项目文件到容器中COPY./home/lab/#COPYrequirements.txt/home/lab#安装依赖包(先更新pip,换源,再安装包)......
  • P1438 无聊的数列 题解
    背景看到题解都是差分,竟然还有建两颗线段树和二阶差分的大佬。我感到不理解,很不理解。题目正解本题正解很明显就是:线段树是的,你没有看错,就只有线段树。很显然我们直接按照线段树板题写就可以了,维护题目需要维护的,注意到只有单点查询,所以我们根本不需要维护区间和,对于区间来......
  • 异步 ApllicationContext pushlishEvent @EventLisener来处理
    importorg.springframework.context.ApplicationContext;importorg.springframework.context.ApplicationEvent;importorg.springframework.context.event.ApplicationEventMulticaster;importorg.springframework.core.task.AsyncTaskExecutor;@Component publi......
  • 手把手教你如何下载高途课堂上面已购买的视频课程
    前言:很多同学都想知道高途课堂的视频课程怎么下载,但是高途课堂上面已购买的视频课程是不提供直接下载方式的,所以下面就教大家如何用学无止下载器下载高途课堂上面已购买的视频课程。一、下载器首页输入G,并按回车,提示登录,再输入Y登录对应的高途账号二、此时会有弹窗让你登录,选择......
  • vue 设置密码添加弱、中、强的校验
    需求:1)需要输入原密码,如果输入的原密码不对,则给出相应提示;2)新密码需要确认,输入两次,且相同,否则系统给出提示;3)新密码长度大于等于6个字符小手18个字符;4)新密码给出密码强度判断,判断规则为:宇母数字符号只有一种则为弱,字母数字符号任意包含两种则为中,字母数字符号包含三种则为强。HTM......
  • ingress查看访问域名日志
    修改ingress配置文件在NginxIngress的日志中,通常不直接显示客户端请求的域名。这是因为Nginx的日志格式是可配置的,而默认配置可能没有包括显示域名的字段。通常,Nginx的日志主要关注于请求的其他方面,如客户端IP、请求类型、状态码等。如果你希望在日志中包含请求的域名,你......
  • python中get请求传参方式的写法
    get请求分为两大类:无参数和有参数1.无参数2.有参数2.1参数较少2.2参数较多-字典形式2.3参数较多-列表+元祖形式......