Go Mysql

数据库驱动使用的是: https://github.com/Go-SQL-Driver/MySQL

首先要先安装Mysql, 执行

go get github.com/Go-SQL-Driver/MySQL
package main

import (
	"database/sql"
	_ "github.com/Go-SQL-Driver/MySQL" // 引入数据库驱动
       	"fmt"
) 

func main() {
	// 连接mysql: db, err := sql.Open("mysql", "user:password@/dbname")
	db, err := sql.Open("mysql", "root:root@/mygo?charset=utf8")
	checkErr(err)

	//插入数据
	stmt, err := db.Prepare("INSERT users SET username=?,password=?")
	checkErr(err)
        // 执行Sql.
	res, err := stmt.Exec("admin", "admin")
	checkErr(err)

        //打印出执行成功的条数
	affect, err := res.RowsAffected()
        // 获取插入成功后的ID
        id, err := res.LastInsertId()

	fmt.Println(affect)
}

func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

GO web Hello world

Go 语言不需要Apache, Nginx等之类的服务器也可以运行.

package main

import (
	"fmt"
	"log"
	"net/http"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
	//这个写入到 w 的是输出到客户端的
	fmt.Fprintf(w, "Hello World!")
}
func main() {
	http.HandleFunc("/", sayhelloName)       //设置访问的路由
	err := http.ListenAndServe(":9090", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

GO 数组

package main

import (
  "fmt"
)

func main() {
  a := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
  // 获取索引5到8的元素
  fmt.Println(a[5:8])
  // 获取索引为5前面的元素
  fmt.Println(a[:5])

  // 获取索引为5后面的元素
  fmt.Println(a[5:])
  fmt.Println(a)
}
~           

Go 控制语句

IF

// 先初始化值再判断, 但是这个变量a只属于一个局部变量.当if条件执行完后就存在了.
if a := 1; a == 1 {
  
}

// FOR与无限循环

  i := 1
  for {
    i++
    if i > 1000 {
        break
     }
     fmt.Println(i)
  }

// FOR 自带条件表达式
  i := 1
  for i < 1000 {
    i++
     fmt.Println(i)
  }


// 经典模式
for i := 0; i<1000; i++{
 fmt.Println(i)
}

Switch CASE
switch case 不需要break, 如果想继续执行下个条件只需要在后面加上fallthrough

  a := 3
  switch a<5 {
    case a>0:
      fmt.Println("大于0")
      fallthrough
    case a>1:
      fmt.Println("大于1")
  }

Break

  LABLE1:
  for {
    for a := 0; a< 10; a++{
      if(a == 3) {
        break LABLE1 // 跳出与Lable1平级的循环
      }
    }
  }

goto 调整程序的执行位置

  LABLE1:
  for {
    for a := 0; a< 10; a++{
      if(a == 3) {
        goto LABLE1 // 这是一个无限循环, 当等于3的时候又将程序跳转到前面LABLE1的位置重新开始执行
      }
    }
  }