GO语言学习
GO语言学习之路
菩提小师傅
擅长服务端分布式高并发架构
展开
-
周威学Go从入门到放弃第二十五篇(Hello World深入)
package mainimport ( "fmt")func main() { fmt.Println("go")}经过前面24篇入门版博文,对go有了初步的认识,上面的代码已经熟能生巧了,既然还没放弃,接下来便努力深入学习一下吧。。。每次打印都要带上fmt很麻烦,根据“懒人原则”,去掉fmt行不行?可以!package mainimport ( . "f...原创 2018-09-29 16:51:27 · 307 阅读 · 0 评论 -
周威学Go从入门到放弃第一篇(环境安装,工具搭建)
Go一火再火,不能落伍赶紧学呀。。。环境安装也算是历经磨难了,不过网上教程还是比较多的,不再赘述。本人开发工具用的LiteIDE 下载地址 版本:localhost:~ zhouwei$ go versiongo version go1.10.3 darwin/amd64环境:localhost:~ zhouwei$ go envGOARCH="amd64"...原创 2018-08-08 11:00:51 · 474 阅读 · 0 评论 -
周威学Go从入门到放弃第二篇(LiteIDE工具)
新建文件如果不小心没写后缀名的话,需要在文件系统里面改(本人mac)运行如果进程无法启动,看下环境变量配置运行点“BR“就行 build and run还是有问题一般是 IDE自身没有找到GOROOT 及没有找到go的安装路径 ,在liteIDE里手动配置下环境变量 LiteIDE->preference->LiteEnv->system.env...原创 2018-08-08 11:10:21 · 1919 阅读 · 0 评论 -
周威学Go从入门到放弃第三篇(数据类型学习)
除go基本类型(int float32 fload64,bool,byte,string等,暂时就学了这么多,不知道还有没)外, 还有struct,map,slice,array下面对每种类型进行大概的学习,加上函数和range的学习,很基础,留着以后复习。哈哈package mainimport "fmt"/*-----------struct 类型学习------------...原创 2018-08-08 16:59:57 · 459 阅读 · 0 评论 -
周威学Go从入门到放弃第四篇(接口定义,异常学习)
使用error需要导入相关的errors包 package mainimport ( "errors" "fmt")type User struct { name string age int}type UserService interface { getUserById(id int) (User, error)}type UserServiceImpl...原创 2018-08-08 19:54:54 · 263 阅读 · 0 评论 -
周威学Go从入门到放弃第五篇(神奇的defer)
package mainimport "fmt"/*Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回;如果有很多调用defer,那么defer是采用后进先出模式.示例如下:*/func main() { fmt.Println("-------1--------")...原创 2018-08-08 20:08:38 · 481 阅读 · 0 评论 -
周威学Go从入门到放弃第六篇(传址?传值?)
不说了,都在酒(代码)里 package mainimport ( "errors" "fmt")/* & 获得地址 *获得值 */func main() { defer fmt.Println("程序已结束。") a := 100 b := 10 fmt.Println("print address :", &a, &b) fmt.Pri...原创 2018-08-08 20:36:12 · 301 阅读 · 0 评论 -
周威学Go从入门到放弃第七篇(panic&recover)
官网解释:panic:假如函数F中书写了panic语句,会终止其后要执行的代码,在panic所在函数F内如果存在要执行的defer函数列表,按照defer的逆序执行 返回函数F的调用者G,在G中,调用函数F语句之后的代码不会执行,假如函数G中存在要执行的defer函数列表,按照defer的逆序执行,直到goroutine整个退出,并报告错误recover:用来控制一个gorouti...原创 2018-08-08 21:28:04 · 427 阅读 · 0 评论 -
周威学Go从入门到放弃第八篇(分组导包,分组定义,iota关键字,类型转换,string截取)
代码里有详细的注释 package main/* 这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println("hello world")可以省略的写成Println("hello world") import( f "fmt" )别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println("he...原创 2018-08-08 22:19:41 · 249 阅读 · 0 评论 -
周威学Go从入门到放弃第九篇(面向对象,继承)
package mainimport . "fmt"/*面向对象 字段和方法的继承 */type Animal struct { color string}type Cat struct { Animal age int}func (animal Animal) Eat() { Println("-----Eat----方法首字母大写就是公有的(public),小...原创 2018-08-09 12:12:36 · 208 阅读 · 0 评论 -
周威学Go从入门到放弃第十篇(多线程)
go语言多线程开发特别容易入门,通过go关键字实现,代码如下:package mainimport ( "fmt" "runtime")func say(s string) { for i := 0; i < 5; i++ { runtime.Gosched() fmt.Println(s) }}func main() { go say("world"...原创 2018-08-09 17:54:35 · 751 阅读 · 0 评论 -
周威学Go从入门到放弃第十一篇(web服务器简易表单)
package mainimport ( . "fmt" "html/template" "log" "net/http")func main() { http.HandleFunc("/", index) http.HandleFunc("/login", login) err := http.ListenAndServe(":8888",原创 2018-08-10 14:28:57 · 339 阅读 · 0 评论 -
周威学Go从入门到放弃第十二篇(表单数据获取,表单校验,跨站脚本攻击)
package mainimport ( "fmt" "html/template" "log" "net/http" "strconv")func main() { http.HandleFunc("/", index) http.HandleFunc("/login", login) err := http.ListenAndServe(原创 2018-08-10 15:33:24 · 215 阅读 · 0 评论 -
周威学Go从入门到放弃第十三篇(连接mysql数据库)
中间休假回家,所以距离上篇时间较长 。。CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8package mai...原创 2018-08-21 16:43:14 · 201 阅读 · 0 评论 -
周威学Go从入门到放弃第十四篇(beego框架入门篇)
下载框架包(本人mac) go get github.com/astaxie/beegopackage mainimport ( "errors" "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" // 导入数据库驱动)type People struct { Id ...原创 2018-08-21 20:46:38 · 1096 阅读 · 0 评论 -
周威学Go从入门到放弃第十五篇(beego框架二 bee工具安装,初试)
bee工具安装go get github.com/beego/bee环境变量配置export GOPATH="$HOME/go"export PATH="$GOPATH/bin:$PATH"检验是否安装成功cd $GOPATH/srcbee new hellocd hellobee run hello访问:http://localhost:8080/...原创 2018-08-22 10:38:57 · 1376 阅读 · 0 评论 -
周威学Go从入门到放弃第十六篇(beego框架三 conf文件配置)
结合上一篇目录bee工具学习,还是用LiteIDE打开,如下项目目录结构:package mainimport ( "log" "strconv" "strings" "github.com/astaxie/beego")type MainController struct { beego.Controller}func (this *MainContro...原创 2018-08-22 16:09:47 · 882 阅读 · 0 评论 -
周威学Go从入门到放弃第十七篇(beego框架四 restful接口,路径参数获取)
如题,本篇主要整理了如下内容controller执行顺序 prepare init get/post/.. finish restful风格接口开发 自定义接口开发 路径参数接收,限制类型等代码中有想起的注释package mainimport ( "log" "strconv" "strings" "github.com/astaxie/beego")...原创 2018-08-22 21:21:23 · 1769 阅读 · 0 评论 -
周威学Go从入门到放弃第十八篇(web服务器简易表单 beego框架版)
框架写法,原生写法:原生写法,简易表单 form表单数据自动绑定model 框架接收url参数,post表单数据上代码表单代码: <header> <h1 class="logo">Welcome to Beego</h1> <div class="description"> <form id="原创 2018-08-23 12:55:22 · 607 阅读 · 0 评论 -
周威学Go从入门到放弃第十九篇(golang 搭建restful api json服务器)
接上一篇周威学Go从入门到放弃第十八篇(web服务器简易表单 beego框架版)调用 this.ServeJSON() 直接返回func (this *MainController) Post() { u := Person{} if err := this.ParseForm(&u); err != nil { //handle error } else { f...原创 2018-08-23 13:29:48 · 803 阅读 · 0 评论 -
周威学Go从入门到放弃第二十篇(发送http请求)
go发送http请求非常方便,调用http包一行代码即可,完整实现如下package mainimport ( "fmt" "io/ioutil" "log" "net/http" "strconv" "time" "github.com/astaxie/beego")type MainController struct { beego原创 2018-08-23 13:44:44 · 236 阅读 · 0 评论 -
周威学Go从入门到放弃第二十一篇(工程化表单)
几经周折,终于把go的包,和目录使用搞明白了,也算有了一个相对完整的工程,代码里加了很多注释,如下。总体目录:router: package routersimport ( "hello/controllers" "log" "github.com/astaxie/beego")func init() { log.Println("------init----...原创 2018-08-26 11:58:46 · 5168 阅读 · 0 评论 -
周威学Go从入门到放弃第二十二篇(MVC设计模式)
接上一篇工程化表单代码进行了MVC封装先看modelpackage modelsimport ( "log" "strconv" "strings" "time" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" // 导入数据库驱动)type Person struct {原创 2018-08-26 15:00:50 · 652 阅读 · 0 评论 -
周威学Go从入门到放弃第二十三篇(session memory版本)
session配置 ,开启session,设置过期时间sessionon = true## 过期时间 10ssessiongcmaxlifetime = 10页面逻辑:login-->后台login方法,判断参数,写入session-->跳转到index方法,判断session,返回index页面-->刷新index页面,调用index方法,已过期,跳转回lo...原创 2018-08-26 17:44:25 · 3444 阅读 · 0 评论 -
周威学Go从入门到放弃第二十四篇(channel实现限流示例)
package mainimport ( "fmt" "time")func main() { c := make(chan int, 2) defer close(c) //提前将队列放满 c <- 1 c <- 2 fmt.Println("开始尝试执行") go cross(c) process(c)}func process(c cha...原创 2018-09-06 16:38:28 · 499 阅读 · 0 评论