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
温馨提示:
- 定义变量,同时显式初始化
- 不能提供数据类型
- 只能用在函数(方法)内部
以下代码会报错
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