1.打印
fmt.Println("asd")
2.字符串與int互轉(zhuǎn)
strconv.Itoa(1) 轉(zhuǎn)字符串
strconv.Atoi("1")轉(zhuǎn)int
3.格式化日期
time.Now().Format("20060102150405")
4.睡眠
time.Sleep(time.Duration(waitTime)*time.Second)
5.隨機(jī)數(shù)
"math/rand"
r := rand.New(rand.NewSource(time.Now().UnixNano()))
r.Intn(100) //0-100隨機(jī)數(shù)
6.tcp連接
"net"
...
conn, err := net.Dial("tcp", "ipport")
if err != nil {
fmt.Println("連接服務(wù)端失敗:", err.Error())
return
}
fmt.Println("已連接服務(wù)器")
defer conn.Close()
Client(conn,tcpData)
...
func Client(conn net.Conn,sms string) {
fmt.Println("要發(fā)送的消息:"+sms)
conn.Write([]byte(sms))
buf := make([]byte, 2)
c, err := conn.Read(buf)
if err != nil {
fmt.Println("讀取服務(wù)器數(shù)據(jù)異常:", err.Error())
}
fmt.Println("服務(wù)器返回:"+string(buf[0:c]))
}
7.字符串分割
"strings"
...
strings.FieldsFunc(TOPIC["data"], split)
...
func split(s rune) bool {
if s == ',' {
return true
}
return false
}
8.字符串包含
"strings"
...
fmt.Println(strings.Contains("seafood", "foo")) //true
9.路徑
wd,err := os.Getwd()
這是定位到源碼的project級別,編譯完成后也是執(zhí)行腳本所在目錄
這也是相對路徑的位置
10.多goroutine間通信兵迅,channel使用
package main
import (
"fmt"
"time"
)
func Producer (queue chan<- int){//往channel里寫入數(shù)據(jù)時觸發(fā)
for i:= 0; i < 10; i++ {
queue <- i//寫入
fmt.Println("create:", i)
}
}
func Consumer( queue <-chan int){//channel里讀到數(shù)據(jù)時觸發(fā)
for i :=0; i < 10; i++{
v := <- queue//寫出
fmt.Println("receive:", v)
}
}
func main(){
queue := make(chan int, 88)
go Producer(queue)
go Consumer(queue)
time.Sleep(1e9) //讓Producer與Consumer完成
}
11.捕獲異常退出,殺進(jìn)程或者ctrl+c
timeStart := time.Now()
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, os.Kill)
s := <-c
timeEnd:=time.Now().Sub(timeStart)
fmt.Println("耗時:", timeEnd.Seconds())
fmt.Println("Got signal:", s)//interrupt