原创 05流程控制
if //定義age,此時age只在if條件判斷語句中生效 if age:=19;age>18{ } for 基本格式 for i:=0;i<10;i++{ } 變種1 var i=5 for ;i<10
原创 03fmt
var n = 100 var s = "沙河" //查看類型 fmt.Printf("%T\n",n) //查看值 fmt.Printf("%v\n",n) //查看二進制 fmt.Printf("%b\n",n)
原创 07複合數據類型
數組 //初始化方式1 var a1 = [3]bool{true, false, true} //初始化方式2,根據值確定長度 a2 := [...]int{1, 23, 4, 5, 6} //初始化方式3,根據索引初始化
原创 01第一個go程序
第一個go程序 package main import "fmt" func main() { fmt.Println("hello world") } 編譯 使用go build 在項目目錄下執行go build 在其他路徑下
原创 02變量和常量
注意 go語言的變量必須先聲明在使用 go語言中非全局變量聲明瞭必須要使用 go語言推薦使用駝峯式聲明 簡短變量聲明只能在函數中使用 變量 單獨聲明 var name string 批量聲明 var ( name string
原创 04字符和字符串
字符串 字符串一旦賦值了,就不能修改了。 字符串的兩種表示方式:雙引號和反引號,反引號以原生形式輸出 []rune(s2)將s2強制轉換爲切片,strings(s3)將切片轉換爲字符串 len(str) 求長度 +或fmt.Sprintf
原创 5中間件
類似與攔截器 全局中間件 package main import ( "fmt" "github.com/gin-gonic/gin" ) func MidddleWare() gin.HandlerFunc{ return
原创 06運算符
不同類型不可以比較
原创 3重定向
支持內部和外部的重定向 r.GET("/test", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "http://www.baidu.com/
原创 2數據綁定
json響應 c.JSON(200, gin.H{ "message": "pong", }) 結構體響應 r.GET("/ping", func(c *gin.Context) { var msg struct{
原创 4同步異步
注意: goroutinues機制可以方便實現異步處理 在啓動新的goroutinues時,不應該使用原始上下文,必須使用它的只讀副本 r.GET("/long_async", func(c *gin.Context) { //
原创 1快速開始
快速開始 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { //1.創建路由 r := gin.Default() /
原创 編譯protobuf
protoc --proto_path=. --go_out=. --micro_out=. proto/example/example.proto
原创 gopath失效
配置文件 GO111MODULE=on 設置爲on時,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。但自定義包在 $GOPATH/github.com/winyh/strrev。就會出現 can not found
原创 go第4天
內置函數 close:主要用來關閉channel len:用來求長度,比如string,array,slice,map,chan