Go语言学习笔记(一)

Go语言学习笔记(一)

基本介绍

Go语言学习笔记(一)_第1张图片 Go语言学习笔记(一)_第2张图片

基本语法

Hello,world

package main //入口包名

import (
	"fmt"
		
)

func main() {
		fmt.Print("htllo,woeld")
}

变量

package main //入口包名
import "fmt"

func main() {

	var a int  = 10;
	var b="string" // var name typename(可省略)
	var c float64 // 变量声明但不定义
	c=3.6;


	f:="3434" // 自动转换类型

	g:=float64(36.2); // 显式定义类型

	fmt.Println(g)

	fmt.Println(a,b,c,f) // 换行输出
}

if else

package main

import "fmt"

func main() {
	n := 9

	if n > 10 {
		fmt.Print("n>10")
	} else if n>8 {
		fmt.Print("测试")
	} else {
		fmt.Println("n<10")
	}
}

for

package main

import "fmt"

func main() {

   for i:=0;i<10;i++ {
      fmt.Println(i)
   }
}

switc

package main

import (
   "fmt"
   "time"
)

func main() {
   a:="string1"

   switch a {
   case "string":
      fmt.Print("string")
   case "e":
      fmt.Println("e")

   default:
      fmt.Println("默认输出")

   }
   
// switch后没有值
   now := time.Now()
   switch {
   case now.Hour()>10:
      fmt.Print("大于十点")
   default:
      fmt.Println("小于十点")
   }


}

数组

package main

import "fmt"

func main() {
   var a[10] int;
   a[1]=0;

   var b=[]int{1,2,3,4,5};

   fmt.Print(b)

}

切片

package main

import "fmt"

func main() {
   var s=make([]int,5);

   for i:=0;i<5;i++ {
      s[i]=i;
   }
   fmt.Print(s)

// 进行扩充操作
   s= append(s, 5)
   s = append(s, 10)
   fmt.Println(s)

   fmt.Println(s[2:5])

   fmt.Println(s[:5])



}

map

package main

import "fmt"

func main() {
// 创建一个map

   var m=make(map[string]int)

   m["lmx"]=1;
   m["zhangsan"]=2;

   r,ok:=m["wanwu"] //r是值,ok代表该键是否存在

   fmt.Println(m,r,ok)
}

range 函数

package main

import "fmt"

func main() {
   // 创建一个数组

   var a = []int{1, 2, 5, 6} // 创建

   var b = map[string]int{"one": 1, "tow": 2}

   a = append(a, 10)

   // 使用range函数遍历数组,i,元素下标,k元素的值
   for i, k := range a {
      fmt.Println(i, k)
   }

   // 使用range函数遍历map,k键,v元素的值
   for k, v := range b {
      fmt.Println(k, v)
   }

   fmt.Println(a)
}

函数

package main


// 定义两个整数相加的函数
func add(a,b int) int  {
   return a+b;
}

func mul(a int,b int) int   {
   return a*b;
}

// 多个值
func exesit(s map[string]string,key string) (v string,ok bool)  {

   r,ok := s[key]
   return r,ok
}

func main() {
   println(add(2, 3))
   println(mul(2, 3))

   v, ok := exesit(map[string]string{"12": "34"}, "2")
   
   println(v,ok)
}

指针

package main

import "fmt"

func addmy(a *int)  {
	*a++;
}

func main() {
	var s =10;
	addmy(&s)

	fmt.Println(s)
}

结构体

package main

import "fmt"

type user struct {
   name string
   password string
}

func main() {
//
   s:=user{"lmx","343434"}

   t:=user{password: "3434"};
   fmt.Println(s)
   fmt.Println(t)
}

结构体方法

package main

import "fmt"

type user struct {
   name     string
   password string
}

// 结构体函数

func (u user) checkPassword() bool {
   if u.password == "1212" {
      return true
   } else {
      return false
   }
}
// 如果想要修改某一元素的值,需要使用指针

func (u *user) setpassword(password string)  {
   u.password=password
}

func main() {
   //
   s := user{"lmx", "343434"}

   //t := user{password: "3434"}
   fmt.Println(s)
   //fmt.Println(t)

   fmt.Println(s.checkPassword())

   s.setpassword("2323")

   fmt.Println(s)
}

异常处理

package main

import (
	"errors"
	"fmt"
)

func adderror(a,b int) (sum int,err error)  {

	if a < b {
		return a+b,nil
	}else {
		return 0, errors.New("a必须小于b")
	}

}

func main() {
	i,err := adderror(56, 3)

	if err!=nil {
		fmt.Println(err)
		return
	}

	fmt.Println(i)

}

字符串方法

Go语言学习笔记(一)_第3张图片

格式化方法

Go语言学习笔记(一)_第4张图片

json

package main

import (
   "encoding/json"
   "fmt"
)

// 定义一个用户对象


// 对于待转换成json格式的结构体对象,变量必须大写,否则无法转化成功
type user struct {
   Age int `json:"age"`// 将某个属性转成json后变为小写
   Address string

   Foods []string
}

func main() {
   u:=user{15,"山西大学",[]string{"苹果","烟"}}

   marshal, err := json.Marshal(u)


   fmt.Println(marshal) // 字节数组
   if err!= nil {
      panic(err)
   }

   fmt.Println(string(marshal))
}

Go语言学习笔记(一)_第5张图片

时间处理

Go语言学习笔记(一)_第6张图片

数字处理

package main

import (
	"fmt"
	"strconv"
)

func main() {
	parseInt, _ := strconv.ParseInt("1111", 10, 64) //base 代表转换的进制,64 代表64位经度的数字

	float, _ := strconv.ParseFloat("111.4545", 64)

	atoi, _ := strconv.Atoi("2323") // 自动进行转化
	
	fmt.Println(parseInt,float,atoi) 
}

进程信息

Go语言学习笔记(一)_第7张图片

猜数字游戏

package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	//
	rand.Seed(time.Now().UnixNano()) //获取纳秒
	num := rand.Intn(100)

	//fmt.Printf("随机数是%v\n", num)

	for true {
		//	读取控制台的输入值
		reader := bufio.NewReader(os.Stdin) //创建一个输入流,系统的标准输入流

		readString, err := reader.ReadString('\n') // 当遇见换行的时候停止读取

		if err != nil {
			fmt.Println("输入不合法,请重新输入")
			//panic(err)
			continue
			//continue
		}
		// 消除/n符号
		readString = strings.TrimSuffix(readString, "\n")

		//	将输入的数字字符串转为数字
		parseInt, err := strconv.Atoi(readString)

		if err != nil {
			fmt.Println("输入不合法,请重新输入")
			//panic(err)
			continue
			//continue
		}

		if parseInt < num {
			fmt.Println("小了")
		} else if parseInt > num {
			fmt.Println("大了")

		} else {
			fmt.Println("恭喜你,猜对了")
			break
		}
	}

}

你可能感兴趣的:(golang,学习,笔记)