go
Lit_leaf
这个作者很懒,什么都没留下…
展开
-
Go 中的Panic和Recover
GO没有像Java那样的异常机制,不能抛出异常而是使用了panic和recover机制。一定要记住,你应当把它作为最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西。这是个强大的工具,请明智地使用它。那么,我们应该如何使用它呢?使用panic抛出异常,抛出异常后将立即停止当前函数的执行并运行所有被defer的函数,然后将panic抛向上一层,直至程序carsh。但是也可...原创 2019-07-24 01:05:33 · 209 阅读 · 0 评论 -
go中字符串的使用注意事项
字符串是不可变值类型,内部用指针指向 UTF-8 字节数组。关于字符串的几个注意点:默认值是空字符串 “”。用索引号访问某字节,如 s[i]。不能用序号获取字节元素指针,&s[i] 非法。不可变类型,无法修改字节数组。字节数组尾部不包含 NULL。1.使用索引号访问字符(byte)s := "abc"println(s[0] == '\x61', s[1] == 'b...原创 2019-07-22 16:24:48 · 166 阅读 · 0 评论 -
Go语言---strings包(字符串操作)
strings标准库包主要涉及字符串的基本操作。常见字符串的操作有:字符串求长度求子串是否存在某个字符或者子串子串出现的次数(字符串匹配)字符串分割(切分)成[]string字符串是否存在某个前缀或后缀字符或者子串在字符串中首次出现的位置或最后一次出现的位置通过某个字符串将[]string进行拼接字符串重复次数字符串中子串替换大小写转换…等等一些基本操作。由于stri...转载 2019-07-22 16:41:52 · 306 阅读 · 0 评论 -
go 中的值类型和引用类型
所有像int, float, string, bool 这些基本类型都是属于值类型,使用时是直接指向内存中的值当使用 = 将一个变量赋值给一个变量时,比如a = b ,这种就是引用类型,实际上是将内存中b的值进行的拷贝,将a的值引用给了b一份使用&i可以获取变量的内存地址,列如: 0xf840000040 16进制方式。值类型的变量的值存储在栈(系统自动释放)中。内存地址会根据机...原创 2019-07-22 16:47:27 · 228 阅读 · 0 评论 -
go中main-package的区别
在Go语言中,和java的main是有所区别的,具体区别如下:在java中,任何一个java文件都可以有唯一一个main方法当做启动函数在go中,则是任何一个package中,都可以有唯一一个带有main方法的go文件也就是说,一个package下,只能有一个main方法,不管是在那个文件中,但是只能有一个,这个package是按照文件夹区分的,举个栗子:main下的Test和util两...原创 2019-07-22 16:49:02 · 482 阅读 · 0 评论 -
go中的堆和栈
我们定义的变量存放在堆还是栈中?一般是这么来分配的堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。那么go中的全局变量和局部变量都是放在哪里呢?1. 首先要搞清楚变量的生命周期...原创 2019-07-22 16:50:02 · 3167 阅读 · 0 评论 -
关于goland中的unsafe.sizeof() 函数详解
切片的内存大小slice := []int{1,2,3}fmt.Println(unsafe.Sizeof(slice)) //24上面声明了一个切片,然后打印出sizeof的值为24,但是不管slice里的元素为多少,sizeof返回的数据都是24。原因:官方文档解释Sizeof takes an expression x of any type and returns the si...原创 2019-07-22 16:50:41 · 1318 阅读 · 0 评论