原创 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