標籤:異常 divide oct reads blank cas pkg 切片 port
一、介紹
目的:使用Go語言寫一個簡單的聊天機器人,複習整合Go語言的文法和基礎知識。
軟體環境:Go1.9,Goland 2018.1.5。
二、回顧
Go語言基本構成要素:標識符、關鍵字、字面量、分隔字元、操作符。它們可以組成各種運算式和語句,而後者都無需以分號結尾。
- 標識符:程式實體,前者即為後者的名稱。
- 關鍵字:被程式設計語言保留的字元序列,不能把它用作標識符。
- 字面量:值的一種標記法。
- 操作符==運算子:用於執行特定算術或邏輯操作的符號,操作的對象稱為運算元。
數組:由若干相同類型的元素組成的序列。
切片(slice):可以看作是一種對數組的封裝形式,它封裝的數組稱為該切片的底層數組。
函數和方法:一個函數的聲明通常包括關鍵字func、函數名、分別由圓括弧包裹的參數列表和結果清單,以及由花括弧包裹的函數體。
func divide(dividend int,divisor ,int)(int,error){ }//函數可以沒有參數列表,也可以沒有結果清單,但空參數列表必須保留括弧,而空結果清單則不用func printTab(){ //}
三、程式(初版本)
代碼倉庫連結:https://github.com/OctopusLian/ChatRobot
package mainimport ( "bufio" "os" "fmt" "strings")func main() { inputReader := bufio.NewReader(os.Stdin) //準備從標準輸入讀取資料 fmt.Println("Please input your name:") input,err := inputReader.ReadString(‘\n‘) //讀取資料直到碰到 \n為止 if err != nil{ fmt.Printf("An error occurred:%s") os.Exit(1) //異常退出 }else { //用切片操作刪除最後的 \n name := input[:len(input)-1] fmt.Printf("Hello,%s! What can I do for you?\n",name) } for{ input,err = inputReader.ReadString(‘\n‘) if err != nil{ fmt.Printf("An error occurred:%s\n",err) continue } input = input[:len(input)-1] //全部轉換為小寫 input = strings.ToLower(input) switch input { case "": continue case "nothing","bye": fmt.Println("Bye!") //正常退出 os.Exit(0) default: fmt.Println("Sorry,I didn‘t catch you.") } }}
參考資料
bufio
os
strings
fmt
用Go語言實現一個簡單的聊天機器人