
go语言
被一米六支配的恐惧
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go使用nacos配置中心进行服务组件配置
go使用nacos配置中心进行服务组件配置原创 2022-09-14 18:25:24 · 1306 阅读 · 0 评论 -
go语言并发
go语言并发//启动多个groutinevar wg sync.WaitGroup //一个计数器一样的东西,用来统计gorountine的启动数量.func hello(i int) { defer wg.Done() fmt.Println("hello Goroutine!", i)}func main() { for i := 0; i < 10; i++ { //启动9 个groutine wg.Add(1) 没循环一次就+1个计数 go hello(原创 2022-09-14 18:21:54 · 300 阅读 · 0 评论 -
go语言使用gin框架
gin框架基础用法package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { router := gin.Default() router.LoadHTMLGlob("templates/**/*") //这里是加载html文件的目录和文件, router.GET("/p/index", func(c *gin.Context) { //这里是指定浏览器需要访问的url路径,原创 2022-09-14 18:19:58 · 561 阅读 · 0 评论 -
grpc服务注册到consul中
Grpc服务注册到Consul中原创 2022-09-12 17:42:53 · 430 阅读 · 0 评论 -
go 使用consul进行服务注册
go语言使用consul进行服务注册原创 2022-09-09 19:13:26 · 582 阅读 · 0 评论 -
go语言sqlx操作数据库
使用sqlx做单条数据查询var db *sqlx.DBfunc initDB() (err error) { dsn := "root:yaochizaocan@tcp(192.168.11.236:3306)/sql_test" db, err = sqlx.Connect("mysql", dsn) if err != nil { fmt.Printf("connect DB failed,err:%v\n", err) return err } db.SetMaxOpen原创 2021-04-06 12:06:04 · 376 阅读 · 0 评论 -
go语言数据库基本操作
初始化创建数据库连接var db *sql.DB //这里注意,要是用sql.DB的指针形式.func initDB() (err error) { dsn := "root:yaochizaocan@tcp(192.168.11.236:3306)/go_test" //用户名==>密码==>连接方式==>地址==>端口号==>数据库名称 db, err = sql.Open("mysql", dsn) //根据预先定义的数据库连接参数创建数据库连接. if原创 2021-03-30 18:21:03 · 1033 阅读 · 0 评论 -
go语言的net/http包的基础使用
写一个能发声get请求的http协议的client端func main() { resp, err := http.Get("http://www.baidu.com") //使用get方法请求百度主页的内容. if err != nil { fmt.Printf("get failed ,err :%v\n", err) return } defer resp.Body.Close() //注意这里使用defer关闭的是resp.body body, err := ioutil.R原创 2021-03-29 16:35:56 · 302 阅读 · 0 评论 -
go语言strconv基础操作
Atoi将字符串类型的整数部分转换成int类型A在C语言中使用array表示字符串.//Atoi()将字符串类型的证书转换成intfunc main() { s1 := "100" i1, err := strconv.Atoi(s1) if err != nil { fmt.Println("can't convert to int") } else { fmt.Printf("type:%T value:%#v\n", i1, i1) }}输出结果C:\Users\34原创 2021-03-26 20:13:39 · 295 阅读 · 0 评论 -
go语言文件操作
打开文件操作 os.openfunc main() { file, err := os.Open("./main.go") //打开文件 if err != nil { fmt.Println("open file failed ! ,err: ", err) return } defer file.Close() //关闭文件句柄}没有输出结果读取文件操作func main() { file, err := os.Open("./main.go") //打开文件原创 2021-03-26 18:05:02 · 272 阅读 · 0 评论 -
go语言log包
log包基本用法func main() { log.Println("这是一条很普通的日志.") v := "很普通的" log.Printf("zheshi一条%srizhi", v) log.Fatalln("这条会触发fatal的日志") //这条会在写入日志信息后调用os.exit() log.Panicln("这条会触发panic日志") //panic系列函数会在写入日志信息后panic}输出结果C:\Users\34826\AppData\Local\Temp\___g原创 2021-03-26 11:59:54 · 498 阅读 · 0 评论 -
go语言flag包的使用
os.args包的使用func main() { if len(os.Args) > 0 { for index, arg := range os.Args { fmt.Printf("args[%d]=%v\n", index, arg) } }}输出结果D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe asd aargs[0]原创 2021-03-25 20:49:35 · 154 阅读 · 0 评论 -
go语言time包
go语言time包//time表示时间类型可以通过time.now()获取当前的时间对象.然后获取时间对象的年月日时分秒等信息func main() { now := time.Now() //获取当前的时间 fmt.Printf("current time:%v\n", now) year := now.Year() //获取年 month := now.Month() //月 day := now.Day() //天 hour := now.Hour()原创 2021-03-25 18:17:49 · 327 阅读 · 0 评论 -
go语言中fmt包的基本用法
go语言中fmt包的基本用法 原文参考:https://www.liwenzhou.com/posts/Go/go_fmt/fmt.printfunc main() { fmt.Print("在终端打印信息") name := "沙河小王子" fmt.Printf("我是%s\n", name) fmt.Println("在终端打印一条显示") fmt.Println(name) //直接打印变量内容}输出结果C:\Users\34826\AppData\Local\Temp\.原创 2021-03-25 16:58:03 · 647 阅读 · 0 评论 -
go语言接口基础
go语言接口基础 原文参考:https://www.liwenzhou.com/posts/Go/12_interface/package mainimport ( "fmt")//接口//接口定义了一个对象的行为规范,之定义规范不是先,有具体的对象来事项规范的细节//一个对象只要全部是先了接口中定义的方法,那么就实现了这个接口,换句话说,接口就是一个需要实现方法的列表.//定义一个Sayer接口// Sayer 接口type Sayer interface { say()}原创 2021-03-22 19:08:05 · 255 阅读 · 0 评论 -
go语言结构体
结构体基本实例化//结构体//基本实例化type person struct { //声明一个结构体类型. name string city string age int8}func main() { var p1 person //声明p1变量为一个person的结构体 p1.name = "沙河娜扎" p1.city = "北京" p1.age = 18 fmt.Printf("p1=%v\n", p1) //直接显示p1结构体赋值后的内容 fmt.Printf("原创 2021-03-20 14:53:38 · 222 阅读 · 0 评论 -
go语言指针
go语言指针 原文参考:https://www.liwenzhou.com/posts/Go/07_pointer///指针func main() { a := 10 b := &a //这里b是一个int类型,存放的地址是一个16进制数字//b变量的内存地址中存的是a的指针 fmt.Printf("a:%d,prt:%p\n", a, &a) //这里%d打印的是a的值,%p打印的是a变量的值对应的内存地址,a==>10==>&a 这其中有上下层关系.原创 2021-03-18 22:47:37 · 296 阅读 · 0 评论 -
函数
函数部分参见原文:https://www.liwenzhou.com/posts/Go/09_function/func intSum(x, y int) int { //函数有两个参数,如果这俩参数类型相同,那么可以写到一起,返回值可以取名也可以匿名,但是需要指定范湖类型, //并且上面传入的参数叫做形参 return x + y //函数返回值,需要跟上面的返回类型相同,数量也应该相同.}func sayHello() { fmt.Println("hello 沙河")}func原创 2021-03-18 19:43:07 · 99 阅读 · 0 评论 -
map的基础用法
map的基本使用 详情参考https://www.liwenzhou.com/posts/Go/08_map///map的基本使用//map类型的变量默认初始值为nil,需要使用make()函数来分配内存func main() { scorceMap := make(map[string]int, 8) scorceMap["张三"] = 90 //向scoreMap中添加一对键值对 scorceMap["李四"] = 66原创 2021-03-17 21:52:38 · 255 阅读 · 0 评论 -
切片相关基础内容
//切片切片声明和初始化: 原文地址:https://www.liwenzhou.com/posts/Go/06_slice///切片func main() { var a []string //声明一个切片. var b = []int{} //声明一个整型切片,并初始化 var c = []bool{false, true} //声明一个布尔值类型切片并初始化 fmt.Println(a, b, c) //打印切片内容.原创 2021-03-17 16:42:11 · 128 阅读 · 0 评论 -
数组相关基础
初始化数组//初始化数组func main() { var testArray = [3]int{1, 2, 3} //定义数组,元素数量为3,类型为int型,数组内容是1,2,3 var numArray = [...]string{"上海", "北京", "杭州", "青岛"} //定义一个不定长的数组.类型为string 内容... fmt.Println(testArray) fmt.Println(numArray) //使用索引值的方式来初原创 2021-03-17 11:41:11 · 92 阅读 · 0 评论 -
go语言for循环
go语言中for循环条件返回true时循环体不停的进行循环,直到条件表达式返回false的时候退出循环//条件表达式返回true的时候循环不听的进行循环,知道条件表达式返回false时自动退出循环func main() { for i := 0; i < 10; i++ { fmt.Println(i) }}条件表达式之前定义条件func main() { i := 0 for ; i < 10; i++ { //这里没有在条件表达式中进行初始化.但是表达式中原创 2021-03-16 19:34:40 · 931 阅读 · 0 评论 -
go语言条件表达式
go语言中条件表达式func main() { if score := 65; score >= 90 { //这里直接声明并判断score 与先声明score再进行判断结果有一点点不同,score在其他位置是不能引用的.只能在if条件里面使用. fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") } //fmt.Println(score) //这里是原创 2021-03-16 19:28:26 · 320 阅读 · 0 评论 -
go语言输出汉字的数量
1.个人解题思路: 因为字符串中只有两类字符,字母和汉字.所以只要将总长度减掉字母长度就可以得到剩余的汉字长度.func main() { s1 := "hello沙河小王子安达市多" a := 0 //定义a 初始化等于0 b := 0 //定义b 初始化等于0 for _, v := range s1 { //循环s1字符串,并取出值v a++ //循环过程中计算字符串的长度. if v < 'z' { //判断字符取出的是否比现有排序最高的字母小,如..原创 2021-03-16 18:15:44 · 496 阅读 · 0 评论 -
变量常量
以下内容仅供自己练习使用.阅读原文请参考https://www.liwenzhou.com/posts/Go/go_menu/package main//单一变量声明//var name string//var age int//var isOk bool//批量声明变量//var (// a string// b int// c bool// d float32//)//变量初始化因为变量当前只是声明了一个类型.并未初始化.//var name string = "Q原创 2021-03-16 15:30:34 · 129 阅读 · 0 评论 -
修改echo程序,使其每打印一个参数的索引和值,并且每行显示一个
直接使用for range循环输入参数即可package mainimport ( "fmt" "os")func main() { for k, arg := range os.Args[0:] { //使用range进行输入参数遍历,遍历内容是从0号位置进行遍历. fmt.Println(k, arg) //将下标和值进行分行打印 }}输出结果如下...原创 2021-03-16 12:23:41 · 412 阅读 · 2 评论 -
使用go语言实现一个echo命令,并且echo命令需要将文件本身也显示出来
go程序设计语言中的题目<go语言圣经>package mainimport ( "fmt" "os")func main() { var s, sep string for i := 0; i < len(os.Args); i++ { //os.args是获取输入内容用的.len(表示获取输入内容的长度,) sep = " " s += os.Args[i] + sep } fmt.Println(s)}编译后控制台执行出入如下..原创 2021-03-16 12:05:59 · 391 阅读 · 0 评论 -
go语言实现一个简易rpc远程调用的服务端和客户端
服务端代码package mainimport ( "log" "net" "net/rpc")type HelloService struct { //空结构体}func (p *HelloService) Hello(request string, reply *string) error { //为hello结构体绑定hello方法 *reply = "你好:" + request //拼接字符串 return nil //返回空值}原创 2021-03-10 12:09:37 · 246 阅读 · 0 评论 -
使用go语言中atomic包实现较低代价的原子性操作
使用go语言中atomic包实现较低代价的原子性操作package mainimport ( "sync" "sync/atomic")var total uint64func worker(wg *sync.WaitGroup) { defer wg.Done() var i uint64 for i = 0; i <= 100; i++ { atomic.AddUint64(&total, i) }}func main() { var wg s原创 2021-03-09 14:46:51 · 144 阅读 · 0 评论 -
go语言实现一个简单的原子互斥操作
go语言实现一个简单的原子互斥操作package mainimport ( "fmt" "sync")var total struct { //指定一个结构体声明一个sync.Mutex类型. sync.Mutex value int}func worker(wg *sync.WaitGroup) { //这里需要输入一个指针类型,如果输入的是值类型的话会报错,报错信息是死锁 defer wg.Done() //程序结束事减少一个goroutine的,这是一个计数器.一般原创 2021-03-09 12:23:59 · 147 阅读 · 0 评论 -
go语言向数据库插入数据
go语言向数据库插入数据package mainimport ( "database/sql" //sql.Open加载包 _ "github.com/go-sql-driver/mysql" //没用到包里的内容但是需要加载一下这个包. "log" "time")func checkErr(err error) { if err != nil { log.Fatal(err) }}func main() { db, err :原创 2021-03-08 17:52:38 · 1811 阅读 · 2 评论 -
go语言创建数据表
go语言创建数据库package mainimport ( "database/sql" //sql.Open加载包 _ "github.com/go-sql-driver/mysql" //没用到包里的内容但是需要加载一下这个包. "log")func main() { db, err := sql.Open("mysql", "root:yaochizaocan@tcp(192.168.10.215:3306)/01kuaixue") //原创 2021-03-08 16:59:56 · 2470 阅读 · 2 评论 -
go语言连接mysql数据库,并验证连通性
go语言连接mysql数据库,并验证连通性package mainimport ( "database/sql" //sql.Open加载包 _ "github.com/go-sql-driver/mysql" //没用到包里的内容但是需要加载一下这个包. "log")func main() { db, err := sql.Open("mysql", "root:yaochizaocan@tcp(192.168.10.215:3306)/01原创 2021-03-08 15:43:20 · 458 阅读 · 0 评论 -
go语言使用gin框架编写一个简单的http服务器
go语言使用gin框架编写一个简单的http服务器package mainimport ( "github.com/gin-gonic/gin" //导入gin包,需要提前下载)func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { //指定从根/下访问的路径 c.JSON(200, gin.H{ "message": "pong", //指定返回信息 }) }) r.Run(原创 2021-03-06 17:19:49 · 353 阅读 · 0 评论 -
使用go语言写一个执行时间中间件,不太明白中间件timeHandler部分的执行过程.
使用go语言写一个执行时间中间件,不太明白中间件timeHandler部分的执行过程.package mainimport ( "fmt" "log" "net/http" "time")func index(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "This is index!")}func hello(w http.ResponseWriter, r *http.Request) { fmt.Fp原创 2021-03-06 17:13:52 · 256 阅读 · 0 评论 -
使用go语言创建一个http服务器.
使用go语言创建一个http服务器.package mainimport ( "fmt" "log" "net/http")func myFunc(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello world!")}func main() { http.HandleFunc("/hello", myFunc) log.Fatal(http.ListenAndServe(":8080", nil))原创 2021-03-06 16:15:20 · 101 阅读 · 0 评论 -
go语言http.Postfrom,用法
go语言http.Postfrom,用法package mainimport ( "fmt" "io/ioutil" "net/http" "net/url")func main() { resp, err := http.PostForm("http://www.baidu.com", url.Values{"user": {"admin"}, "pass": {"admin"}}) //创建一个post请求,并将url.values信息传入到指定url中. if err !=原创 2021-03-06 11:44:29 · 1820 阅读 · 0 评论 -
go语言使用http/net包中的post方法
go语言使用http/net包中的post方法package mainimport ( "fmt" "io/ioutil" "net/http" "strings")func main() { resp, err := http.Post("http://www.baidu.com", //请求的url地址 "application/x-www-from-urlencoded", //设置表头 strings.NewReader("user=admin&原创 2021-03-06 11:34:55 · 471 阅读 · 0 评论 -
go语言使用http/net包中的http请求中的Get方法
go语言使用http/net包中的http请求中的Get方法代码如下:package mainimport ( "fmt" "io/ioutil" "net/http")func main() { response, err := http.Get("http://www.baidu.com") if err != nil { fmt.Println(err) } body, _ := ioutil.ReadAll(response.Body) //使用ioutil读原创 2021-03-06 11:05:11 · 751 阅读 · 0 评论