go语言入门
go语言入门
djcjcdj
有空多学习,少摸鱼,多睡觉
展开
-
int转字符串
go语言入门int转字符串这里的目的是输出固定位数的字符串形式的intpackage mainimport "fmt"func main() { // int转字符串时,需要固定位数,不足补0。 // 这是一个固定写法,%010d 的意思是不足十位前面补0 其中的010可以拆解为0 和 10 这个10就是位数 x := fmt.Sprintf("%010d", 1111) fmt.Println(x)}...原创 2021-02-09 17:33:28 · 688 阅读 · 0 评论 -
8、接口
go语言入门接口声明一个接口type InterfaceName interface{ Foo()string}怎么实现一个接口首先定义一个struct给指定类型添加一个方法实现接口的定义:一个struct实现了所有接口的方法,默认为实现了接口,无需关键字再次声明需要注意的点在go语言中有两种类型,一种是基底类型,一种是指针类型type Foo struct { Name string Age int32}func (f *Foo) Grow() { f.Age++原创 2021-02-02 11:21:22 · 78 阅读 · 0 评论 -
7、关于指针的理解
go语言入门指针在go语言中,有两个操作符&和* 那么这两个操作符有啥作用呢。这个要从基本说起了。“&”: 取值的指针“*”:取指针的值我们操作的是指针还是值?请问下面代码中的a是一个指针还是一个值?func main(){ var a = 2}我们使用代码来验证。(下面代码是可以通过编译的)很明显,答案:a是一个值func main() { var a = 2 recvValue(a) fmt.Println(a) recvPointer(&a)原创 2021-02-01 13:58:13 · 85 阅读 · 0 评论 -
6、go关键字
go语言入门go关键字go fmt.Println("Go!")上面这个语句就启动另一个协程,执行fmt.Println("Go!")多线程(协程)调度第一种 sleep使用sleep控制调度package mainimport ( "fmt" "time")func main() { go fmt.Println("Go!") time.Sleep(100 * time.Millisecond)}第二种 sync类似java中的CountDo原创 2021-01-31 19:22:53 · 121 阅读 · 2 评论 -
5、panic——异常处理
go语言入门panic用于抛出一个运行时异常,会向上传播,直到某个方法中使用了recover的内建函数接收了这个异常,程序才会恢复需要配合defer函数使用,这样才符合接收异常的语句。而且defer语句要写在可能发生异常的代码之前以下例子会输出这些内容Enter mainEnter outerFuncEnter innerFuncFatal error: Occur a panic!package mainimport ( "errors" "fmt")func inn原创 2021-01-29 14:48:42 · 366 阅读 · 2 评论 -
4、error处理
go语言入门error——异常处理Go语言的函数可以一次返回多个结果。这就为我们温和地报告错误提供了语言级别的支持因此只要类型实现了Error方法的都可以认为是error接口的实现type error interface { Error() string}如何判断是否异常error是接口类型,零值是nil,所以只要判断是否等于nil即可知道要判断一个异常时对应类型的异常,使用==判断error于EOF比较func main(){ file,error= os.Open("/原创 2021-01-29 14:20:21 · 154 阅读 · 0 评论 -
3、defer语句
go语言入门defer延迟执行一条语句,当一个程序被正常执行并退出前一刻或者异常退出前一刻。不能执行内建函数和unsafe类的函数内建函数执行顺序当一个函数中存在多个defer语句时,它们携带的表达式语句的执行顺序一定是它们的出现顺序的倒序使用defer作用域外变量的注意事项变量作用域问题defer是在程序执行完退出前执行的,因此拿到的变量是最终的状态func deferIt() { fmt.Println() for i := 0; i < 5; i++ { defer原创 2021-01-29 13:59:17 · 123 阅读 · 0 评论 -
2、条件分支和循环(select、for、switch、if)
go语言入门条件分支if语句可以包含初始语句,类似for的初始语句func main() { var num int if num = 4; num < 5 { num+=2 }else if num<3 { num+=3 }else { num+=10 } fmt.Println(num)}func main() { var num int // 标识符的重声明 num被再次声明,那么if内部使用的是重声明后的,其他作用域任然使用的是第一次声明的原创 2021-01-28 22:44:23 · 306 阅读 · 1 评论 -
1、源码文件
go语言入门go源码文件名称以.go为后缀,内容以go语言代码组织的文件多个go源码文件是需要用代码包组织起来的分类命令源码文件声明自己属于main代码包、包含无参数声明和结果声明的main函数被安装后,相应的可执行文件会被存放到gobin指向的目录或者<当前工作区目录>/bin下命令源码文件是go程序的入口,但不建议把程序都写在一个文件中注意:同一个代码包中强烈不建议直接包含多个命令源码文件库源码文件不具备命令源码文件的那两个特征的源码文件被安装后,相应的归档文件会被存原创 2021-01-28 20:43:02 · 1308 阅读 · 0 评论