Golang学习笔记-基本概念和命令

包的概念

  1. 把相同功能的代码放在一个目录,称之为包
  2. 包可以被其他包引用
  3. main包时用来生成可执行文件的,每个程序只能有一个main函数
  4. 包的主要用提时提高代码的可复用性

基本命令

#快速执行
go run .\src\github.com\studyGithubPro\day01\hello.go

#编译
go build .\src\github.com\studyGithubPro\day01\hello.go
#结果:在当前目录下生成
hello.exe

#指定生成目录
go build .\src\github.com\studyGithubPro\day01\hello.go -o ./bin/hello.exe

#go install命令
#把当前目录下的exe文件拷贝到bin目录下
go install hello

#go test 执行单元测试
#go env 查看环境变量
#go fmt 设置源码格式
go fmt .\src\github.com\studyGithubPro\day01\hello.go

#Go程序结构

#注释
 1. 当行注释 //
 2. 多行注释 /* */
 

特性

  1. 垃圾回收机制
    a,内存自动回收
    b,goroutine,轻量级线程,可创建成千上万的线程
    func calc(){
    	for i := 0;j<10;i++{
    	time.Sleep(1*time.Second)
    	fmt.Println("run ",i, " times")
    	}
    }
    go calc()
    
  2. 管道:进程间通信
  3. 多返回值
    func add(a int, b int) int {
    	return a+b
    }
    func add2(a int, b int) (int,int) {
    	return a+b,a-b
    }
    func main(){
    	sum,sub := add(5,3)
    	fmt.Pintln(sum,sub)
    }
    
  4. 编译型语言

标识符,关键字

变量与常量

var number int = 100
var str string = "hello"
var b bool

var(
number int = 100
str string = "hello"
b bool = false
f float32 = 32.33
)

//布尔个格式化符号是%t
fmt.Println("%d, %t, %s, %f",number,b,str,f)

//常量
const str string = "hello"
//可不加类型修饰
const Pi = 3.1415

const(
	//iota 默认值为0,递增
	a1 = iota
	a2 = iota
	a3= 5
	a4 = iota //4
)

const(
	//如果不初始化,则与前一个值相同
	a1 = 1
	a2	//1
	a3 = 2
	a4  //2
)

//bool类型
var a bool //默认初始化值为false
var b bool //默认初始化值为false
b = !b 		//取反
if a == true && b == true{
	fmt.Println("right")
}else{
	fmt.Println("not right")
}

//整数和浮点数
int8
int16
int32
int64

uint8
uint16
uint32
uint64

float32
float64

//万能输出占位符:
//当不知变量类型时使用
%v
//=与:=的区别
var a int32
a = 100

//自动定义
//已定义的变量不可使用:=
b := 200

//引号,原样输出字符,转义字符无效
`\n\t\r`


//函数
var str string = "123456"
lens := len(str)

//拼接
fmt.Sprintf("%s,%s",str,str)

//截取
strings.Split()
//包含
strings.Contains()
//字符串开头
strings.HasPrefix()
//结尾判断
strings.HasSuffix()
//字符出现位置判断,前,后
strings.Index()
strings.LastIndex()

//切片
var str = "123456"
//由于字符串在被赋值后无法别修改
//通过切片的方式修改
var byteSlice []byte
byteSlice = []byte(str)
byteSlice[0] = 2
//将切片转成string类型
str = string(byteSlice)

//utf8字符
var str rune = "中文"
var byteSlice []rune 
byteSlice = []rune (str)
lens := len(byteSlice) //2

包引用规则

通过大小写区分私有和共有访问控制
大写开头表示共有,可被外部访问
小写表示私有,不可被外部访问

时间和日期类型

package main
import (
	"fmt"
	"time"
)

func testTime(){
	now :=   time.Now()	
	year :=  now.Year()
	month := now.Month()
	day :=   now.Day()
	minute:= now.Minute()
	sec := 	 now.Second()
	day :=   now.Day()
	fmt.Println("当前时间:%v\n", now)
	fmt.Println("年月日:%04d\n", year)
	//当前时间戳,1970到现在的秒数
	//一下两种方式得到的时间戳相同
	timestamp := now.Unix()
	timeObj := time.Unix(timestamp,0)
}

//定时器
func testTicker(){
	//每秒执行定时器,设置10s定时器
	ticker := time.Tick(time.Second*10)
	for i:= range ticker{
		fmt.Println("当前时间:%v\n", time.now())
	}
}

//时间常量
func testTimeCosnst(){
	//val = 1
	fmt.Println("ManoSecond:%d\n", time.ManoSecond)
}

//格式化
func testTimeFrom(){
	now := time.now()
	//时间必须是这个,不可修改
	timStr = now.Format("2006/01/02 15:04:05")
	fmt.Println("timStr :%d\n", timStr)
}

func main(){
	testTime()
}

条件判断和循环语句

n := 2
if n == 2 {
	fmt.Println("n:%d\n", n)
}else{
	fmt.Println("n != 2\n")
}


更新时间:2020年4月12日21:10:33

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值