go学习

类型
  • 变量
var 变量名 类型 = 初始化    //其中类型可以省略
  • 常量
const pi int = 3
const (
	a = 0
	b = 1
	c = 2
)

const (
 a = iota
 b
 c
)
// a 为0 b为1 后面自动加一
类型
值类型
  • int int8 int16 int 32 int64 uint …
  • bool
  • byte
  • string
  • float
  • struct
引用类型
  • 指针
a = 5
&a  // 现在为a的地址
func add(a *int){
*a = 10
}
a = 5
add(&a)   //这时候全局的a值为10


  • slice
  • map
    声明:var a map[type]value
    var a map[string]string
    a = make(make[string]string,len) //len可写可不写
    a['123]  = 'asdf'
    
    判断key是否存在
    a := map[string][sting]{"name":"123"}
    b, c := a["name"]
    

// b是值,c是布尔值,如果key name存在为true, 不存在为false

遍历
for v, k := range a{
	v//是key
	k//是value
}
删除
delete(a,key)
长度
len(a)
  • chan
字符串方法

strings包

  • strings.HasPrefix(s string , pre string) //判断s是否以pre开头的
  • strings.HasSuffix(s string , pre string) //判断s是否以pre结尾的
  • Index(s string, a string) //判断s中a字符串首次出现的位置
  • LastIndex //最后出现的位置
  • Replace(s string , old,new) //替换
  • Count(s,a) //a在s中出现的次数
  • Repeat (s ,a)// 在s中出现a次的字符
  • trimspace(s) //去掉s中收尾的空格
  • trim(s,‘-’)//去点s中首尾‘-’
  • fields(s)//将s以空格分隔成数组
  • split(s,a)//将s以a分隔成数组
  • join(s,a)//将数组s以a连接为字符串

函数

func add(a int, b int) (int) {
  c = a + b
  return c
}

不定参数

func add(a int,b ...int){  //此时b就是一个不定长参数,函数里面以数组形式接受

}
defer

类似上下文,函数执行完,最后会执行defer 后面的语句

内置函数
  • close //关闭channel
  • len //求长度
  • new //用来分配内存 返回是一个指针
  • make // 用来分配内存,返回的是数值。
  • append //用来添加元素
  • panic,recover //错误处理
func test() {
	defer func(){
		if err:=recover();err != nil {
		fmt.println(err)
		}
		a:=10
		b:=0
		c:=a/b
}
}
func  main(){
	test()
	fmt.println(11111111)  //程序错了,捕获到,但是不会崩溃
}
数组

同一种类型固定长度的序列

var lis [len]int  
var lis [6]int
var lis [...]int{1,2,3,4,5,6}

数组是值类型

切片

切片是可变的数组。是引用类型

  • cap 可以判断切片的容量
排序

sort包
sync//锁包

var lock sync.Mutex //互斥锁
lock.Lock()//加锁
lock.unlock()//释放锁

var wrlock sync.rwlock
wrlock.rlock()
wrlock.runlock()
结构体 //类似于别的语言的类。

struct 结构体是值类型的

type Student struct{
	name string
	age int
	
}

方法:

func (p student)   add(a string b int){  //p 实际就是结构体的实例化对象

}

匿名字段


type people struct{
	name string
	age int
}
type student struct{
people
}
//这里就类似于类的继承。
s : = student{}
s.name
s.age  //可以访问到people中的字段
s.people.name
s.people.age  //也可以
反射 (获取类型)

reflect 包
reflect.TypeOf() 获取类型、可以获得到时哪个类的属性
reflect.ValueOf() 获取值
reflect.Vlue.Kind //获取类型
reflect.Value.Interface //转换成interface类型
操作结构体:
reflect.Value.NumFiled //获取属性
reflect.Value.Methods.Call //获取方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值