Go基础学习【1】

简介: Go基础学习【1】

一:基础类型

1.不能以数字 ,关键词 ,名字里不能有运算符
2.导入包不使用会报错

3.类型有int float bool string 复合型struct array slice map channel 只描述类型的行为的 iinterface
4.类型转换

类型b的值 = 类型b(l类型a的值)
5.init包常用来做调用goroutine执行
6.:=只能在自己函数内部调用 不可以用于全局变量的声明

func main() { //GOG
   a = "G"
   print(a)
   f1()
}
func f1() {
   a := "O"
   print(a)
   f2() //依旧调用的是全局变量里的a的值
}
func f2() {
   print(a)
}


7.go中没有float和double类型 只有float32和float64类型
8.格式化:%d 整数 %g 浮点数 %b二进制 %o 八进制 %x %X十六进制 大小写 %0d输出定长的整数 %n.mg / %n.mf 表示精确小数点后几位

%c character %v或%d输出该字符的整数
9. \n换行 \r 回车 \ 反斜杠 \t tab键
10.go中的len()用于获取ASCI字符串长度,对于其他字符会占有2-4个字符,
(中文字符是占3个字符位置) 而是用RuneCountlnString() 则会获得字符串的长度

func main() {
   // count number of characters:
   str1 := "asSASA ddd dsjkdsjs dk"
   fmt.Printf("The number of bytes in string str1 is %d\n", len(str1)) //22
   fmt.Printf("The number of characters in string str1 is %d\n", utf8.RuneCountInString(str1)) //22
   str2 := "asSASA ddd dsjkdsjsこん dk"
   fmt.Printf("The number of bytes in string str2 is %d\n", len(str2))  //28
   fmt.Printf("The number of characters in string str2 is %d", utf8.RuneCountInString(str2)) //24
}


11.字符串常用方法:
1.判断字符串开头结尾是否包含某个

strings.HasPrefix(s,prefix string) bool 判断orefix是否是s开头
strings.HasSuffix(s,suffix string) bool 判断suffix是否是s结尾


2.Contains Index 和 LastIndex 和 IndexRune

strings.Contains(s,substr string) bool  // 判断字符串substr是否在s
strings.Index(s,str string) int // 判断str在s中的索引位置
strings.LastIndex(s,str string) int // 返回str在s中最后出现时的索引位置
strings.IndexRune(s string,r rune) int //如果查找时候不是asci码时,使用该方法
//第四个方法例子
strings.IndexRune("chicken",'k')
strings.IndexRune("chicken",'d')


2.Contains Index 和 LastIndex 和 IndexRune

strings.Contains(s,substr string) bool  // 判断字符串substr是否在s
strings.Index(s,str string) int // 判断str在s中的索引位置
strings.LastIndex(s,str string) int // 返回str在s中最后出现时的索引位置
strings.IndexRune(s string,r rune) int //如果查找时候不是asci码时,使用该方法
//第四个方法例子
strings.IndexRune("chicken",'k')
strings.IndexRune("chicken",'d')


3.Replace 和 count 替换和统计次数

strings.Replace(str,old,new string,n int)) string //将前n个old替换成new
strings.count(s,str string) int //统计s中str的个数


4.重复 Repeat 和 修改字符串的大小写

strings.Repeat(s,count int) string //将目标字符串重复count遍
strings.Tolower(s) string  //将字符创转化为小写
strings.ToUpper(s) string  //将字符串转化为大写


5.修剪TrimSpace,分割Fields,Split,拼接slice 字符串

strings.TrimSpace(s) //用来剔除字符串开头和结尾的空呗符号
strings.TrimSpace(s,"cut") // 将开头和结尾的cut去除掉
strings.Fields(s)  //利用空呗作为分隔符
strings.split(s,sep) //自定义分隔符号
strings.join(s1,sep string) // 以sep为分隔符将s1拼接上去


6.读取内容 NewReader 和 字符串和其他类型的转化

Read() //从[]byte中读取内容
ReadByte() 和 ReadRune() //从字符串中读取下一个byte或者rune
strconv.IntSize //查看int类型所占的位数
strconv.Itoa(i int) string //返回i的字符串型的十进制数字
strconv.FormatFloat() string //将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSize 则使用 32 表示 float32,用 64 表示 float64。
strconv.Atoi(s string)(i int,err error) //将字符串型转化为int类型

**7.指针:不可以用于常量

var i1 = 5 定义变量

var intP *int 调用指针p

使用 intP= &i1 将i1的地址赋予intP

要想表示5 则可以使用 *intP 则可以表示指针所指地址的值

如果 *intP 的值发生改变,表示的是指针所指地址的值发生改变 那个i1也就发生了改变,不是原来的值


二:循环结构

1.for循环两种输出形式

for xx(){

}

for 索引,值 :=range xx{

}

2.标签 对大小写敏感 要求全部大写字母**

LABEL1:
   for i := 0; i <= 5; i++ {
      for j := 0; j <= 5; j++ {
         if j == 4 {
            continue LABEL1
         }
         fmt.Printf("i is: %d, and j is: %d\n", i, j)
      }
   }

标签的作用对象为外部,所以continue跳出之后,会进入外层的下一步寻循环内


三:函数

1、slice…
如果参数被存储在一个slice类型的变量中,可以通过slice…的形式来调用变成那函数
2、defer 还可以用来 追踪进入和离开

类似于java中的finally,最后执行 当有多个deger时,类似于栈,后进先出
3.闭包
当函数作为返回值i的时时候,

func Add2() (func(b int) int) 例如这种
有 p:= Add2(2) 这个参数2传给你的是返回匿名函数中

相关文章
|
1月前
|
自然语言处理 Go 索引
Go语言学习8-接口类型
【4月更文挑战第1天】本篇 Huazie 向大家介绍 Go 语言中的接口类型
24 2
Go语言学习8-接口类型
|
1月前
|
并行计算 算法 安全
通过三个例子,学习 Go 语言并发编程的利器 - goroutine
通过三个例子,学习 Go 语言并发编程的利器 - goroutine
46 0
|
1月前
|
安全 Go 开发工具
Go语言学习6-字典类型
【1月更文挑战第7天】本篇 Huazie 介绍 Go语言中的字典类型
43 1
Go语言学习6-字典类型
|
1月前
|
Go 数据安全/隐私保护 索引
Go语言学习5-切片类型
【1月更文挑战第4天】本篇 Huazie 带大家了解 Go 语言的切片类型
46 2
Go语言学习5-切片类型
|
1月前
|
存储 Go
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
161 0
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
|
1月前
|
网络协议 Go API
Go语言学习-网络基础
Go语言学习-网络基础
37 0
|
1月前
|
JSON JavaScript Go
Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
掌握 Go 语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解 Go 基础知识的好起点是查阅 Go 官方文档
647 2
|
1月前
|
SQL 前端开发 Go
编程笔记 GOLANG基础 001 为什么要学习Go语言
编程笔记 GOLANG基础 001 为什么要学习Go语言
|
1月前
|
存储 编译器 Go
Go语言学习12-数据的使用
【5月更文挑战第5天】本篇 Huazie 向大家介绍 Go 语言数据的使用,包含赋值语句、常量与变量、可比性与有序性
58 6
Go语言学习12-数据的使用
|
1月前
|
Java Go
Go语言学习11-数据初始化
【5月更文挑战第3天】本篇带大家通过内建函数 new 和 make 了解Go语言的数据初始化过程
39 1
Go语言学习11-数据初始化