go语言分享准备笔记

语言介绍:语法简单,高并发,支持内存回收,支持开发效率和代码执行效率
安装环境:
  1. 在线开发环境(https://golang.org/)
  2. 本地开发环境搭建,安装包下载地址(https://golang.org/dl/)。支持*nix,window和其他平台。
  3. 开发工具,基于intellj的开发工具,推荐的有LiteIDE(用go写的),Notepad++,vim,Eclipse等。
1. hello,world
package main

import "fmt"

func main() {
   fmt.Println("Hello, 世界")
}
  1. 程序必须在package 为main的文件下,同一个包下面的文件package名需要一样。
  2. 开发函数必须是main()方法
  3. 在main方法后的{不能另起一行。
  4. 公开可调用的方法必须是大写字母开头
项目工作空间的配置

每一个工程都需要配置在GOPATH

变量的定义和范围修饰符
var 定义变量
const定义常量
a,b := 2,"string" //在方法内部,可以用该方式简写

基本数据类型

基本数据类型和自定义类型

var a int
var b bool
var str string 

简写的方式:

    var(
      a int
      b bool
      str string
      )
函数的定义,多返回值
/**
    读取数据库的配置文件
 */
func ReadDbConfig(path string) (*DbConfig,error) {
    res,err := ioutil.ReadFile(path)
    if err!= nil {
        return nil,err
    }
    var config DbConfig

    err = json.Unmarshal(res,&config)
    if err != nil {
        return nil,err
    }
    return &config,nil
}
数组,slice,map,自定义类型以及他们的初始化
      var a [12]int
  a[0] = 12
  fmt.Println("a[0]",a[0])

切片类型

    //基于数组创建
      
    var a [12]int
    a[0] = 12
    b := a[:cap(a)/2]
    b[2] = 23
    fmt.Println("b",b)
    //直接创建
    var b []string
    b = make([]string,10)
    b[0] = "test0"
    b[1] = "test0"
    b[2] = "test0"
    b[3] = "test0"
    b[4] = "test0"
    fmt.Println("b",b)

map类型

result := make(map[string]interface{})
    result["code"] = 200
    result["msg"] = "上传成功"
    result["data"] = ""
    re,_:=json.Marshal(result)
    fmt.Println(string(re))

自定义类型

type People struct {
    Name string
    Age int
    Sex string
  }

       p0 := new(People)
    p1 := &People{}
    p2 := &People{"yanghai",18,"man"}
    p3 := &People{Name:"yanghai",Age:18}
接口
import "fmt"


type Animal interface {
     Run() error
     Eat(foodName string)
}

type Animal2 interface {
    Run() error
    Eat(foodName string)
}


type People struct {
    Name string
    Age int
    Sex string
}

func (p People) Run() error {
    return nil
}
func (p People) Eat(foodNmae string)  {
    fmt.Println("name = ",p.Name ," eat = ",foodNmae)
}
两个协程利用channel通信处理一个数组的相加
import "fmt"

//利用多协程计算和
func TestSum()  {
    values := [] int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    resultChan := make(chan int, 2)

    go sum(values[:len(values)/2], resultChan)//从0到一半的位置

    go sum(values[len(values)/2:], resultChan)//从一半的位置打最后的位置

    sum1, sum2 := <-resultChan, <-resultChan //

    fmt.Println("Result:", sum1, sum2, sum1+sum2)
}


func sum(values [] int, resultChan chan int) {
    sum := 0
    for _, value := range values {
        sum += value
    }
    resultChan <- sum //         channel
}

go web
  1. hello,world
  2. 解析json文件
  3. 链接数据库

资料链接
go入门指南
Go语言编程.pdf
Go Web编程.pdf-谢孟军
Go语言实战.pdf
go读书笔记-第五版
go并发编程实战第二版
goweb编程-黄键宏最新版

点赞