| 檔案名稱 | 版本號 | 作者 | 版本 | |
|---|---|---|---|---|
| go語言就是golang_1天學會_基礎篇 | v1.0.2 學生宮布 | 8416837 | go1.13.4 windows/amd64 |
相關教程
go環境-vscode
基礎、web等
go web代碼生成、基于框架開發
文章目錄
- 相關教程
- 語法
- 時間
- 字串
- list
- goroutine 并發
- 通道實作'分布式計算'
- 例外處理
- 控制臺游戲
- 猜數字 二分查找法
語法
時間
- 基本
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("hg")
fmt.Println("Time", time.Now())
}
- 格式化一下
// 【注意】必須是"2006-01-02 15:04:05",否則格式化不正確
fmt.Println("Time", time.Now().Format("2006-01-02 15:04:05"))
fmt.Println("Time", now.Year())
字串
package main
import (
"fmt"
"strings"
)
func main() {
var strs [3]string
strs[0] = "6e0ef25a-32f1-4405-b458-efbde3ff4ec6"
strs[1] = "ae632042-1b77-4fd5-b76a-7ac730db8a6c"
strs[2] = "204b7324-4ee4-4672-9900-faa8ee392432"
replacer := strings.NewReplacer("-", "")
for i := 0; i < len(strs); i++ {
fmt.Println(replacer.Replace(strs[i]))
}
}
Output:

list
package main
import (
"container/list"
"fmt"
)
func main() {
table := list.New()
table.PushBack(1)
table.PushBack("ball")
table.PushBack("orange")
table.PushBack('x')
table.PushFront(88.48)
fmt.Println("長度", table.Len())
for i := table.Front(); i != nil; i = i.Next() { // 末尾i變成nil
fmt.Println(i.Value)
}
}
goroutine 并發
- code
package main
import (
"fmt"
"time"
)
func doSth(msg string, NUM int) {
for i := 0; i < NUM; i++ {
time.Sleep(123 * time.Millisecond)
fmt.Println(msg)
}
}
func main() {
go doSth("goroutine~", 5)
doSth("main thread~", 5)
}
- out:

通道實作’分布式計算’
package main
import "fmt"
func sum(s []float32, compute_channel chan float32) { // chan float32 定義通道
var sum float32 = 0
for _, v := range s {
sum += v
}
compute_channel <- sum // 把 sum 發送到通道 compute_channel
}
func main() {
s := []float32{3.5, 9.2, 0.3, 5, 5, 0} // 定義輸入
compute_channel := make(chan float32)
go sum(s[:len(s)/2], compute_channel) // 多個goroutine模擬分布式計算 當前場景各計算一半
go sum(s[len(s)/2:], compute_channel) // go命令執行后,開始并發
x1, x2 := <-compute_channel, <-compute_channel // 從通道 compute_channel 中接收
fmt.Println(x1, x2, x1+x2)
}
例外處理
- code
package main
import (
"errors"
"fmt"
)
func Sqrt(f float64) (float64, error) { // 多個回傳
if f < 0 {
return 0, errors.New("math: square root of a negative number is not permitted")
}
// 模擬實作
return 1, nil // 回傳多個
}
func main() {
val,err := Sqrt(-1)
if err != nil {
fmt.Println(`結果 == `, val, `
例外 == `, err)
}
}
- output
結果 == 0
例外 == math: square root of a negative number is not permitted
控制臺游戲
猜數字 二分查找法
- 猜一個1-100以內的自然數
package main
import (
"bufio"
"fmt"
"log"
"os"
"strconv"
"strings"
)
func main() {
var targetNum float64 = 100
var num float64
var msg string
var count int
for {
fmt.Println("Please input one number")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
input = strings.TrimSpace(input)
count++
num, err = strconv.ParseFloat(input, 64)
if err != nil {
log.Fatal(err)
}
if num == targetNum {
fmt.Println(count, `真棒,猜對了`)
break
} else if num > targetNum {
msg = `大了`
} else if num < targetNum {
msg = `小了`
}
fmt.Println(`輸入`, num, msg, `第`, count, `次競猜`)
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/243903.html
標籤:區塊鏈
上一篇:k3s執行helm命令報錯:Error: Kubernetes cluster unreachable: Get “http://localhost:8080/version?timeout=32s“
下一篇:【TensorFlow 2 gpu 安裝】步驟2 - ubuntu 20.04 安裝 NVIDIA Container Toolkit Nvidia Docker 2
